스프링 #11 환경설정 최종본

수박·2020년 6월 10일
0

Spring

목록 보기
10/18

스프링 #11 CRUD를 위한 설정 총 망라!/진짜/진짜/최종(더미데이터, 테이블 추가)

패키지들의 name

config : 프로젝트 설정 클래스 보관

controller : controller 보관

service : service 인터페이스, 구현 클래스

domain : VO,DTO 클래스

persistence : Mybatis Mapper 인터페이스

exception : 예외처리

aop : AOP 관련

security : Security 관련

util : 유틸리티 클래스

요구사항의 정리

고객은 새로운 게시물을 등록할 수 있다.

고객은 특정 게시물을 조회할 수 있다.

고객은 작성한 게시물을 삭제할 수 있다.

=> 게시물의 구조를 판단해 DB 테이블을 설계해야한다.

naming에서 Board관련해서 짓는 것이 좋다.

그에 대한 클래스의 멤버변수들을 설계할 땐 PPT 또는 Mockup 툴을 이용해 작성해본다.

각 화면을 설계할 때, 전체 페이지 흐름을 설계한다.

흐름은 URL로 구성하고 GET/POST방식에 대해 같이 언급해두는 것이 좋다.


예제 시작

먼저 라이브러리를 설치한다.

  • pom.xml설정은 [여기서]([https://github.com/SeongsangCHO/TIL/blob/master/Spring%20framework/Spring%20CRUD%EC%97%90%20%ED%95%84%EC%9A%94%ED%95%9C%20Dependencies%20%EB%AA%A8%EC%9D%8C.md](https://github.com/SeongsangCHO/TIL/blob/master/Spring framework/Spring CRUD에 필요한 Dependencies 모음.md))

servlet 버전 변경할 때 에러가 발생했는데, 버전업을 하면서 artifactid가 번경이 되어서 앞에 javax.를 추가했다.

테이블 생성 및 더미데이터 생성

sql developer에 생성한 계정에 접속하여 테이블을 작성한다.

게시물은 각 고유번호가 필요하므로, 시퀀스를 이용해 이를 처리한다.

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);

테이블 설계할 때 레코드 생성 및 수정시간을 같이 기록하는 것이 좋다.

따라서 regdate, updatedate는 sysdate를 기본 값으로 지정해 자동으로 기록될 수 있게 해준다.

마지막으로 테이블의 bno에 pk_board라는 이름의 기본키를 부여한다.


더미데이터 추가

bno는 게시물마다 매번 새로운 값이 들어가야하니, nextval을 이용해 처리한다.

insert 작업을 수행하면 꼭 commit을 수동으로 처리한다. 단축키는 F11

insert into tbl_board (bno, title, content, writer)
values (seq_board.nextval, '테스트 제목', '테스트 내용', 'usrer00');

select * from tbl_board;

![더미데이터 출력결과](C:\spring\이미지\더미데이터 출력결과.JPG)


DB 관련 설정 및 테스트 (root-context.xml)

root-context의 namespace에 mybatis-spring을 추가하고, xml 내용을 작성한다.

<!-- 히카리 CP 빈 등록 -->
	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
	<!-- 	<property name="driverClassName"
			value="oracle.jdbc.driver.OracleDriver">
		</property>
		<property name="jdbcUrl"
			value="jdbc:oracle:thin:@localhost:1521:XE"></property>
			 -->
			 <property name="driverClassName"
			 	value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
			 	<property name="jdbcUrl"
			 	value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
			<property name="username" value="book_ex"></property>
			<property name="password" value="book_ex"></property>
	</bean>	
		
	<!-- 히카리 CP 설정 -->
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
		destroy-method="close">
		<constructor-arg ref="hikariConfig"/>
		</bean>
		
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property></bean>

	<mybatis-spring:scan base-package="org.zerock.mapper"/>

src/main/resources 하위에 log4jdbc.log4j2.properties파일을 작성한다.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

그리고나서, DataSource, JDBCTests 테스트 코드를 수행한다.[여기서]([https://github.com/SeongsangCHO/TIL/blob/master/Spring%20framework/%EC%8A%A4%ED%94%84%EB%A7%81%20Test%EC%BD%94%EB%93%9C.md](https://github.com/SeongsangCHO/TIL/blob/master/Spring framework/스프링 Test코드.md))

그럼 정말 설정 준비 끝!

0개의 댓글