[꼼꼼한 개발자] 꼼코더

13. 코드로 배우는 스프링 웹 프로젝트 - [스프링과 DataBase 연동] - MyBatis와 스프링 연동 본문

Spring/코드로 배우는 스프링 웹 프로젝트

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 라이브러리 클래스로 등록한다.

 

 

 

위 내용은 코드로 배우는 스프링 웹 프로젝트 교재를 참고하여 작성되었습니다.

 

코드로 배우는 스프링 웹 프로젝트 - YES24

이 책은 Spring Framework(이하 스프링)를 사용해서 말 그대로 ‘웹 프로젝트’를 어떻게 진행하는지를 설명하는 책이다. 웹 프로젝트라고 거창하게 표현하지만, 좀 더 구체적으로는 스프링으로 웹

www.yes24.com

 

 

 

Comments