Part 2 에서는 Part 1에서 공부했던 것들을 바탕으로 게시판을 만들어볼 것이다.
이번 글에서 Part 1 했던 것들을 다시 쭈르륵 빠르게 세팅하면서 알아보면서 진행해보자!
스프링에 대해 어느정도 지식이 있는 분들은 Part2부터 진행해도 무방쓰!~~
(다만 세팅하다가 조금씩 건너띄는 부분은 Part1 참조 ㅎㅎ)
시작해보자!

- 일반적인 웹 프로젝트의 구조는 3-Tier의 구조를 활용
- 스프링 MVC를 이용하는 예제의 구성
📌 각 영역의 네이밍 규칙
- xxxController: 스프링 MVC에서 동작하는 Controller 클래스
- xxxService, xxxServiceImpl: 비지니스 영역을 담당하는 인터페이스는 'xxxService'라는 방식을 사용하고, 인터페이스를 구현한 클래스는 'xxxServiceImpl'이라는 이름을 사용
- xxxDAO, xxxRepository: DAO(Data-Access-Object)나 Repository(저장소)라는 이름으로 영역을 따로 구성하는 것이 보편적. 예제에서는 별도의 DAO를 구성하는 대신에 MyBatis의 Mapper인터페이스를 활용
- VO, DTO: VO의 경우는 주로 Read Only의 목적이 강하고, 데이터 자체도 Immutable(불변)하게 설계. DTO는 주로 데이터 수집의 용도
📌 기본적인 게시물의 CRUD 흐름
📌 프로젝트의 생성 및 준비
- Spring Legacy Project의 생성
- Porm.xml에서 스프링 버전 변경
- spring-test,spring-jdbc,spring-tx 추가
- junit 버전 변경
- Servlet 버전 변경
- HikariCP, MyBatis, mybatis-spring, Log4jdbc추가
- JDBC드라이버 프로젝트 내 추가
- 기타 Lombok의 설정 등
자 이제 네이밍 규칙, CRUD흐름, 프로젝트의 생성 및 준비까지 알아보았으니
본격적으로게시판을 만들어보자!!

여느 때와 똑같이 Spring Legacy Project로 ex02라는 이름의 프로젝트를 생성해주자.
만드셨다면 Spring버전과 JDK버전을 porm.xml에서 바꾸어주신다.~~ 이제 아마 너~무 익숙할 거다. 다음에 뭘 하는지 예상을 해보면서 해보자!!!!!!
예상과 같이
이제 라이브러리 추가다!
porm.xml에 Spring-jdbc, Spring-test, Spring-tx를 추가하시면 된다~
그리고 실무에서 만들 때든 프로젝트를 하실 때 DB먼저 연결하면 편하다!
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6/11.2.0.4
위의 링크에서 노란 부분의 Dependency를 복붙하자!
여기까지 하셨다면 라이브러리에 문제가 없는지 실행을 해보자!
문제가 없다면 DB connection에 관련된 것들을 해보자 HikariCP, DataSource를 추가하는 것이다.
위의 사진처럼 바꾸어주시고
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
위의 코드를 다 집어넣어주자.
HikariCP mybatis mybatis-spring log4j 까지 완료되었다.
파일도 경로에 맞게 추가해준다.
또 root-context.xml에 밑의 코드를 추가한다.
<bean id="hikariConfig"
class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="book_ex" />
<property name="password" value="book_ex" />
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
이제 커넥션 풀 까지 아무문제가 없어야한다.
Maven Update를 해주고 restart해보고 문제없으면 진행하자
또 Mybatis와 spring 을 연결해주기위해
이제 롬복세팅과 log4j 세팅을 바꿔주자.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
porm.xml에 위의코드를 넣고 log4j 도 버전과 exclusion을 아래 사진대로 고쳐주자
또 한번의 실행을 해주어 문제가 없는지 확인해보자.
항상 라이브러리 추가나 코드변경이 일어나면 실행하여 체크를 해주는 습관을 길들이자!
이제 코드로 확인을 해보자
패키지를 하나 생성하고 인터페이스로 TimeMapper인터페이스를 생성해주자
그리고 컴포넌트스캔을 추가하고
sql문 test할 것을 적어준다.
TimeMapperTests.java
package org.zero.mapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zero.mapper.TimeMapper;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class TimeMapperTests {
@Autowired
private TimeMapper timeMapper;
@Test
public void testGetTime() {
log.info("testGetTime.....................");
log.info(timeMapper.getTime());
}
}
그리고 앞서 했던 것과 같이 test에도 TimeMapperTests라는 클래스를 만들어 위 사진과 같이 코드를 작성해준다.
testGetTime을 실행시키면??
원하는 정보가 잘 찍히는 것을 확인할 수 있다.
📌 데이터베이스 내 테이블 생성
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);
테이블 생성과 프라이머리키 생성을 해준다.
그리고 아래 sql문으로 데이터 삽입을 해보자
insert into tbl_board (bno,title,content,writer)
values(seq_board.nextval, '테스트 제목', '테스트 내용', 'user00');
아 참! 커밋 잊지말자 ㅎㅎ
테스트 해보자.
select * from tbl_board order by bno desc;
정확히 들어갔다!
여기까지가 프로젝트를 진행하기위한 세팅이 끝난 것이다! 다음 글로 가보자

'Spring' 카테고리의 다른 글
[Part 2] 게시물 조회/삭제/수정 #3 (0) | 2023.01.18 |
---|---|
[Part 2] BoardVO클래스와 매퍼테스트 #2 (0) | 2023.01.17 |
[Part 1] Spring Controller #10 (0) | 2023.01.15 |
[Part 1] 스프링 MVC #9 (0) | 2023.01.14 |
[Part 1] MyBatis 연동 #8 (0) | 2023.01.13 |