▷ 스프링 MVC를 이용하는 프로젝트의 구성을 이해하는 일은 전체 데이터 흐름을 보기 위해서임.
▷브라우저에서 전송한 데이터를 스프링 MVC의 어떤 단계를 거쳐서 실행되는지 알면 문제 발생시 빠른 대처, 대안을 찾을 수 있음
일반적인 웹 프로젝트 구성 3-tier(티어) 방식으로 구성
1. Presentation Tier(화면 계층)는 화면에 보여주는 기술을 사용하는 영역 ▷ 프로젝트의 성격에 맞춰 앱으로 제작하거나 CS(Client-Server)로 구성되는 경우도 있음 ▷ 스프링 MVC와 JSP를 이용한 화면 구성이 이에 속함
2. Business Tier(비즈니스 계층)는 순수한 비즈니스 로직을 담고 있는 영역 ▷ 고객이 원하는 요구 사항을 반영하는 계층이기 때문(영역의 설계는 고객의 요구 사항과 정확히 일치해야 함) ▷ 'xxxService'와 같은 이름으로 구성하고 메소드의 이름 역시 고객들이 사용하는 용어를 사용하는 것이 좋음
3. Persistence Tier(영속 계층 혹은 데이터 계층)은 데이터를 어떤 방식으로 보관하고 사용하는가에 대한 설계가 들어가는 계층 ▷ 데이터 베이스를 많이 사용하지만 경우에 따라 네트워크 호출이나 원격 호출 기술이 접목됨
스프링 MVC 영역은 Presentation Tier를 구성하게 되고, 각 영역은 별도의 설정을 가지는 단위로 볼 수 있음
2. 예제 프로젝트 구성
▷ Spring Legacy Project를 생성해 'ex02' 이름 지정 → org.codehows.controller 생성
◎ Servlet 3.1 버전, JDK8 기능 활용 위한 Maven 관련 Java 버전 수정
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>11</source> <!-- 내용 수정 -->
<target>11</target> <!-- 내용 수정 -->
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
ex02 우클릭 → Maven → Update Project
(2) 테이블 및 dummy 생성
▷ SQL Developer 접속 및 이전에 생성샜던 book_ex 계정을 통해 테이블 생성
create sequence seq_board;
create table tbl_board(
bno number(10,0),
title VARCHAR2(200) not null,
content VARCHAR2(2000) not null,
writer VARCHAR2(50) not null,
regdate date default sysdate,
updatedate date default sysdate
);
alter table tbl_board add constraint pk_board
primary key(bno);
게시물은 각 게시물마다 고유의 번호가 필요한데 오라클의 경우 시퀀스를 통해 작업 처리를 합니다. 시퀀스 생성시 다른 오브젝트들과 구분하기 위해 'seq_'와 같이 시작합니다.
◎ 테이블에 행 추가
insert into tbl_board(bno, title, content, writer)
values (seq_board.nextval, '테스트 제목', '테스트 내용', 'user00');
select * from tbl_board;
insert를 여러번 실행하면 동일한 값이 순서만 바뀌면서 삽입됩니다.
select * from tbl_board 실행하면 아래와 같이 나타납니다.
오라클은 MySQL과 다르기 때문에 isert가 끝나면 반드시 커밋(F11)을 해야합니다.
3. 데이터베이스 관련 설정 및 테스트
▷ root-context.xml에는 mybatis-spring 네임스페이스를 추가하고, Part 1에서 작성한 DataSource 설정과 MyBatis 설정 추가