본문 바로가기

Spring Framework 개발 일지/Spring으로 게시판 만들기

FirstSpringBoard#3-2] 프로젝트 과정 설명 & 비즈니스로직 구현하기(게시물 등록 하기)

반응형
아래 그림은 여태까지 진행한 프로젝트의 순서를 간단히 정리한 것입니다.



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와 아래 메소드를 추가해주세요.



이제 기본적인 흐름은 파악하셨을 거같아요. 나머지 기능은 다음 포스팅에서 일괄적으로 구현하겠습니다.


반응형