본문 바로가기
IT 공부/자바와 웹 애플리케이션

[마이바티스] - 마이바티스 스프링 빌드 방법

by exdus3156 2024. 1. 7.

마이바티스는 단독으로도 라이브러리를 사용할 수 있지만(링크를 클릭하면 방법이 나온다), 친절하게도 스프링 프로젝트에서는 마이바티스를 함께 사용하는 라이브러리를 제공해준다. 이를 이용하면 아주 쉽게 스프링 프로젝트에서 마이바티스를 이용할 수 있다. 실제로 스프링 프로젝트 시 마이바티스를 단독으로 사용하진 않는다고 들었다.

내가 따로 마이바티스 단독 설정을 정리하고 포스팅한 이유는 스프링에서 마이바티스 설정 시, 단독 과정과 비교하면 설정을 이해하기가 수월하기 때문이었다. 그 내용을 간략하게 요약하면,

1) SessionFactory에게 <mybatis-config.xml> 파일로 데이터베이스 드라이버와 Datasource, 그리고 매퍼 xml을 알려준다.

2) SqlSessionFactory가 xml 정보를 토대로 session을 생성하고, session에서 매퍼 구현체를 얻어 스프링 빈으로 등록한다. 따라서 @Autowired로 매퍼 객체를 사용할 수 있다.

 

 

1) 의존성 라이브러리 추가

일단 데이터베이스와 연결되어야 하므로 자신이 사용하는 DB의 jdbc 드라이버가 있어야 한다. 그리고 선택 사항이지만 되도록 Connection Pool을 통해 성능을 향상시키는 것이 좋으므로 HikariCP와 같은 라이브러리를 함께 사용한다. 여기까지는 데이터베이스 관련 설정이고, 당장의 마이바티스와는 관련이 없다. 

아래의 4개의 의존성이 마이바티스-스프링 관련 의존성이다. 주의할 점은 spring-jdbc, spring-tx는 기존의 스프링 의존성 버전과 일치시켜야 한다는 점이다.

 

2) Connection Pool(HikariCP)와 JDBC 드라이버 빈 등록

<root-context.xml> 파일에 아래와 같은 빈을 등록한다. 데이터베이스 자체는 웹에 종속된 기술이 아니므로 <servlet-context.xml>이 아니라 이 파일에 설정하는 것이 좋다. 여기까진 마이바티스와 별개다.

 

3) SqlSessionFactory 빈 등록

<root-context.xml> 파일에 아래의 빈을 등록한다.

마이바티스 기술은 xml로 sql과 매퍼 인터페이스를 매핑시키는 기술이다. 따라서 SqlSessionFactory에게 데이터베이스의 dataSource와 매퍼 xml을 알려줘야 할 것이다. 단독 설정과 다를 것이 없다! 이 과정이 위 설정에 담겨 있다.

클래스패스에서 xml 파일을 찾도록 되어 있다. 대부분의 프로젝트에서는 매퍼 xml 파일은 src/main/resources/mappers 폴더에 두는 것이 관례다. 

그리고 root-context.xml 파일의 끝에 <mybatis:scan> 태그를 반드시 붙여야 한다. 붙이지 않으면 매퍼 인터페이스의 위치를 식별하지 못하는 것으로 확인되었다.

 

4) mapper.xml 설정하기

공식 홈페이지에 있는 간단한 사용법을 그대로 가져 온 것이다. namespace에 매퍼 인터페이스 파일을 정확히 알려주고, SQL 문법과 연계하면 된다.

 


스프링 프로젝트가 항상 설정하는 것이 언제나 까다롭다. 마이바티스도 복잡해보인다. 그러나 단독 설정과 다를 것이 하나도 없다는 것을 안다면 스프링과 마이바티스가 어떻게 연결되는지 눈에 보일 것이다.