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방식에 대해 같이 언급해두는 것이 좋다.
먼저 라이브러리를 설치한다.
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)
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))