[꼼꼼한 개발자] 꼼코더
13. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - MyBatis와 스프링 연동 본문
13. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - MyBatis와 스프링 연동
꼼코더 2022. 12. 31. 16:39🍃 MyBatis와 스프링 연동
스프링과 MyBatis를 연동하여 더 빠르게 SQL을 처리할 수 있게 만들어 보자.
MyBatis는 흔히 ‘SQL 매핑(mapping) 프레임워크’로 분류된다.
JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 사용된다.
💽 JDBC
- 직접 Connection 맺고 마지막에 close()
- PreparedStatement 직접 생성 및 처리
- PreparedStatement의 setXXX() 등에 대한 모든 작업 개발자가 직접 처리
- SELECT의 경우 직접 ResultSet 처리
🐧 MyBatis
- 자동으로 Connection부터 close()까지
- 내부적으로 PreparedStatement 처리
- 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리
MyBatis는 기존의 SQL을 그대로 활용할 수 있고 진입장벽이 낮다는 장점이 있다.
초반에 설명했던 스프링 프레임워크의 특징 중 하나인 “다른 프레임워크들과 연동을 쉽게 하는 라이브러리가 많다” 를 기억하는가?
MyBatis 역시 mybatis-spring이라는 라이브러리를 통해 쉽게 연동작업을 처리할 수 있다.
예제에서 사용할 구조는 아래와 같다.
📚 MyBatis 관련 라이브러리 추가
MyBatis와 mybatis-spring을 사용하기 위해 pom.xml 파일에 추가적인 라이브러리를 설정해야 한다.
- spring-jdbc/spring-tx:스프링에서 데이터베이스 처리와 트랜잭션 처리(추가 하지 않으면 에러 발생)
- mybatis/mybatis-spring: MyBatis와 스프링 연동용 라이브러리
👨🏻💻 pom.xml 추가
🏭 SQLSessionFactory
MyBatis에서 가장 핵심적인 객체는 SQLSession과 SQLSessionFactory이다.
SQLSessionFactory : 내부적으로 SQLSession라는 걸 만들어 내는 존재이다.
SQLSession : 자신을 통해 Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴 받는 구조로 작성한다.
👨🏻💻 root-context.xml 추가
스프링에 SQLSessionFactory를 등록하는 작업은 SQLSessionFactoryBean을 이용한다.
이때 주목할 점은 패키지가 MyBatis가 아닌 스프링과 연동 작업을 처리하는 mybatis-spring 라이브러리 클래스이다.
☕️ Java 설정을 이용하는 경우
RoonConfig 클래스에 @Bean을 이용해서 설정한다.
SqlSessionFactoryBean을 이용하여 SqlSession을 사용해 보는 테스트는
기존의 DataSourceTests 클래스에 추가하여 확인한다.
👨🏻💻 DataSourcetests 추가
testMyBatis()는 설정된 SqlSessionFactory 인터페이스 타입의 SqlSessionFactoryBean을 이용해서 생성하고,
이를 이용해서 Connection 까지 테스트한다.
💁🏻♂️ 결과
정상적인 로그가 출력된다.
🧹 최종 정리
- MyBatis는 흔히 ‘SQL 매핑(mapping) 프레임워크’로 분류된다.
- MyBatis 역시 mybatis-spring이라는 라이브러리를 통해 쉽게 연동작업을 처리할 수 있다.
- MyBatis에서 가장 핵심적인 객체는 SQLSession과 SQLSessionFactory이다.
- SQLSessionFactory : 내부적으로 SQLSession라는 걸 만들어 내는 존재이다.
- SQLSession : 자신을 통해 Connection을 생성하거나 원하는 SQL을 전달하고, 결과를 리턴 받는 구조로 작성한다.
- 스프링에 SQLSessionFactory를 등록하는 작업은 SQLSessionFactoryBean을 이용
- SQLSessionFactoryBean 등록 시 MyBatis가 아닌 스프링과 연동 작업을 처리하는 mybatis-spring 라이브러리 클래스로 등록한다.
위 내용은 코드로 배우는 스프링 웹 프로젝트 교재를 참고하여 작성되었습니다.
'Spring > 코드로 배우는 스프링 웹 프로젝트' 카테고리의 다른 글
15. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - XML 매퍼와 같이 쓰기, log4jdbc-log4j2 설정 (0) | 2023.01.02 |
---|---|
14. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - 스프링과 연동 처리 (0) | 2023.01.02 |
12. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - 커넥션 풀 설정 (0) | 2022.12.31 |
11. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - 프로젝트의 JDBC 연결 (0) | 2022.12.29 |
10. 코드로 배우는 스프링 웹 프로젝트 - [스프링의 특징과 의존성 주입] - 스프링 단일 생성자의 묵시적 자동 주입 (0) | 2022.12.26 |