[Spring] Mybatis 스프링 연동

2020. 8. 12. 01:42Spring/Spring

1. Mybatis 스프링 연동

1) 라이브러리 추가

기존에 사용한 BoardWeb 스프링 프로젝트에 라이브러리를 추가한다. Mybatis는 스프링에서 연동에 필요한 API를 제공하는것이 아닌, Mybatis에서 API를 제공한다. 따라서 org.mybatis.spring.SqlSessionFactoryBean, org.mybatis.spring.SqlSessionTemplate 클래스를 사용한다.

 

Mybatis-Spring을 사용하기 위한 버전정보를 참고하여 추가한다.

pom.xml

pom.xml

2) Mybatis 설정 파일

Mybatis Mapper XML로 board-mapping.xml을, Mybatis Configuration XML로 db.properties와 sql-map-config.xml 파일을 생성한다. 여기서 db.properties 파일의 데이터 소스의 경우, 기존에 스프링 프레임워크에서 이미 사용하고 있기 때문에 삭제한다(/src/main/resources/config/database.properties). 또한 기존의 데이터 소스는 트랜잭션 처리처럼 다양한 곳에서 사용할 수 있기 때문에 Mybatis 설정이 아닌 스프링 설정 파일에서 제공하는 것이 맞다.

/src/main/resources/mappings/
board-mapping.xml

board-mapping.xml

/src/main/resources/
sql-map-config.xml

sql-map-config.xml

3) 스프링 연동 설정

스프링과 Mybatis를 연동하기 위해, 데이터베이스 연동에 사용되는 SqlSession 객체를 얻기 위한 SqlSessionFactoryBean 클래스를 Bean 등록한다.

 

SqlSessionFactoryBean 객체가 SqlSession 객체를 생성하기 위해 DataSource와 SQL Mapper 정보를 Setter 인젝션으로 참조하여 설정한다.

/src/main/resources/
applicationContext.xml

applicationContext.xml

4) DAO 클래스 (1)

Mybatis를 이용하여 DAO 클래스를 구현하는 방법 중 하나는 SqlSessionDaoSupport 클래스를 상속하여 구현하는 방식이 있다.

 

setSqlSessionFactory() 메서드를 재정의하는 동시에 @Autowired 어노테이션을 이용하여 스프링 컨테이너가 메서드를 자동으로 호출하도록 한다. 그리고 설정 파일에 <bean> 등록된 SqlSessionFactoryBean 객체를 인자로 받아 부모인 SqlSessionDaoSupport에 setSqlSessionFactory() 메서드로 설정해준다.

/src/main/java/
BoardDAOMybatis.java

BoardDAOMybatis.java

5) DAO 클래스 (2)

Mybatis를 이용하여 DAO 클래스를 구현하는 또 다른 방법으로는 SqlSessionTemplate 클래스를 <bean> 등록하는 방법이다.

/src/main/resources/
applicationContext.xml

applicationContext.xml

/src/main/java/
BoardDAOMybatis.java

BoardDAOMybatis.java

6) 테스트 클라이언트

BoadDAOMybatis 객체를 의존성 주입할 수 있도록 BoardServiceImpl 클래스의 변수를 수정을 하고 클라이언트 프로그램을 실행하거나 jsp 파일을 구동하여 확인한다.

/src/main/java/
BoardServiceImpl.java

BoardServiceImpl.java

구현 화면

구현 화면


[참고] 스프링 퀵 스타트

728x90

'Spring > Spring' 카테고리의 다른 글

[Spring] JPA (1)  (0) 2020.08.12
[Spring] Dynamic SQL 검색 처리  (0) 2020.08.12
[Spring] Mybatis 프레임워크 (2)  (0) 2020.08.11
[Spring] Mybatis 프레임워크 (1)  (0) 2020.08.08