아래 그림은 여태까지 진행한 프로젝트의 순서를 간단히 정리한 것입니다.
1. 프로젝트 계획
-ERD는 데이터베이스 테이블에 관한 명세입니다. 테이블에 관한 정보과 테이블들간의 관계에 관한 정보가 담겨있어요.
프로젝트에 앞서서 필요한 데이터베이스 테이블를 설계한다고 생각하면 됩니다.
-Mockup은 내가 구현할 애플리케이션의 UI를 설계하는 것입니다. 설계하면서 웹페이지 컴포넌트들의 동작들에 대해서 생각할 수 있고
실제 비즈니스 로직 구성에 대해서 생각해 볼 수 있어요.
-UML은 폭넓은 개념인데 대표적으로 시퀸스 다이어그램이나 클래스 다이어그램을 예로 들 수 있어요. 프로젝트 구성에서 객체들의 관계나 비즈니스 로직에서 객체들의 동작이 어떻게 되는지 정해진 형식으로 보여줍니다.
2. 프로젝트 생성입니다.
-디렉토리 생성은 프로젝트의 폴더구성입니다. 우리가 프로젝트에서 사용하는 빌드툴인 메이븐는 정해진 규칙에 따라서 디렉토리를 구성하지 않으면 빌드를 하지 않습니다. 우리는 src/main/java에 클래스를 생성하고 src/main/wepapp 폴더에 웹콘탠츠들을 저장했습니다.
src/test 폴더에 테스트 코드들을 저장했었고요. 이렇게 메이븐에는 정해진 규칙이 있습니다.
하지만 걱정할 필요없습니다 우리는 IDE에서 규칙에 맞는 디렉토리를 구성해줍니다.
-의존성 관리는 중요합니다. 마이바티스나 스프링도 메이븐의 pom.xml에 의존성을 추가해서 아주 손쉽게 이용할 수 있습니다.
메이븐을 이용하지 않았다면 해당하는 jar파일들을 모두 다운받아서 직접 프로젝트 폴더안에 넣어야합니다.
3. 개발환경 설정입니다.
-2번과 엄격하게 분리할 수 없지만 구분해서 생각하면 덜 헷갈릴 거같아요.
우리는 mybatis-config.xml에서 typealias와 enviroment, mappers를 통해서 마이바티스를 설정했어요.
모두 DB연동을 위해 필요한 부분들이죠. 환경 설정 또한 우리는 이클립스 플러그인을 통해서 손쉽게 생성해서 설정했죠.
-Util Class 생성은 SqlSession을 얻어오기위해서 필요합니다. 그리고 SqlSession을 생성하는 SqlSessionFactory는 mybatis관련 정보를 가지고 있기 때문에 작업진행중에는 하나만생성되어 있어야합니다. 그래서 싱글톤 패턴을 적용했습니다.
4. 비즈니스 로직 구현입니다.
-VO는 도메인 객체라고도 합니다. 비즈니스 로직에서 대상이되는 객체입니다. 우리는 BoardVO를 만들어줬고 각 필드는 테이블의 Column과 대응되었었죠. 그리고 getter, setter도 만들었는데 이는 자바빈의 규약입니다. 그리고 마이바티스나 스프링은 객체의 getter와 setter를 의존성 주입이나 타입 매핑에 이용하기 때문에 꼭 만들어주세요. 테스트를 위해서 toString() 메소드도 만들어줍니다.
-Mapper.xml도 중요합니다. JDBC에서는 String 문자열로 SQL을 자바 클래스 안에서 관리해주었죠. 마이바티스에서는 SQL을 xml 파일에 따로 관리합니다.
JDBC를 사용할 때 PrepareStatement를 이용해서 SQL문에 파라미터를 넣주었어요. Ex] pstmt.setString(1, columnName)
마이바티스에서는 Mapper.xml에서 파라미터 매핑을 해줍니다. Ex] #{parameterName}
마이바티스는 자바 클래스에서 해주던 DB연동을 xml파일로 빼서 관리해주는 것이죠.
-매퍼 인터페이스는 Mapper.xml의 각 mapper들의 이름과 파라미터, 리턴타입과 대응되는 메소드들을 정의한 것입니다. 인터페이스를 이용해서 코드 수를 줄일 수 있어요.
이제 비즈니스 로직을 마저 구현해볼게요. 보통 CRUD에서 C에 해당하는 기능을 먼저 구현해요.
그래야 테스트할 때도 수월하기 때문이죠.
우선 전에 구성했던 프로젝트의 디렉토리 구성은 아래와 같습니다. 우선 src/main/resources아래 Mapper.xml을 열어주세요.
<insert> 엘리먼트를 <mapper> 엘리먼트 안에 추가해주세요. 다음 단계는 매퍼 인터페이스에 이 엘리먼트에 대응되는 메소드를 정의하는 것입니다.
BoardMapper.java 파일을 열어서 아래와 같이 메소드를 추가해주세요.
이제 DAO에서 BoardMapper의 insertBoard 메소드를 호출해서 DB와 연동할 수 있습니다.
DAO에 SqlSession을 통해서 Mapper를 호출해 DB와 아래 메소드를 추가해주세요.
이제 기본적인 흐름은 파악하셨을 거같아요. 나머지 기능은 다음 포스팅에서 일괄적으로 구현하겠습니다.
'Spring Framework 개발 일지 > Spring으로 게시판 만들기' 카테고리의 다른 글
FirstSpringBoard#3-4] Service 인터페이스 구현 & 테스트 코드 수정 (0) | 2017.08.27 |
---|---|
FirstSpringBoard#3-3] 수정, 삭제, 특정 게시물 조회 기능 구현 & Service 인터페이스 구현 (0) | 2017.08.27 |
FirstSpringBoard#3-1] 비즈니스로직 구현하기(전체 글 조회) (0) | 2017.08.24 |
FirstSpringBoard#2]마이바티스와 연동하기 (0) | 2017.08.24 |
FirstSpringBoard#1-2] 메이븐 의존성 추가 (0) | 2017.08.24 |