MyBatis
MyBatis는 흔히 'SQL 매핑(mapping) 프레임워크'로 분류되는데, 개발자들은 JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 많이 사용합니다.
https://mybatis.org/mybatis-3/
mybatis – MyBatis 3 | Introduction
What is MyBatis? MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use
mybatis.org
MyBatis는 기존의 SQL을 그대로 활용할 수 있다는 장점이 있고, 진입장벽이 낮은 편이어서 JDBC의 대안으로 많이 사용합니다. 스프링 프레임워크의 특징 중 하나는 다른 프레임워크들을 배척하는 대신에 다른 프레임워크들과의 연동을 쉽게 하는 추가적인 라이브러리들이 많다는 것입니다. MyBatis 역시 mybatis-spring이라는 라이브러리를 통해서 쉽게 연동작업을 처리할 수 있습니다.
MyBatis 관련 라이브러리 추가
MyBatis와 mybatis-spring을 사용하기 위해서 pom.xml 파일에 추가적인 라이브러리들을 설정해야한다.
- spring-jdbc/spring-tx : 스프링에서 데이터베이스 처리와 트랜잭션 처리(해당 라이브러리들을 MyBatis와 무관하게 보이지만 추가하지 않은 경우에 에러가 발생하므로 주의합니다.)
- mybatis/mybatis-spring : MyBatis와 스프링 연동용 라이브러리
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
▶ pom.xml에 추가되는 라이브러리
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
SQLSessionFactory
MyBatis에서 가장 핵심적인 객체는 SQLSession이라는 존재와 SQLSSessionFactory입니다. SQLSessionFactory의 이름에서 보듯이 내부적으노 SQLSession이라는 것을 만들어 내는 존재인데, 개발에서는 SQLSession을 통해서 Connection 생성하거나 원하는 SQL을 전달하고 결과를 리턴 받는 구조로 작성하게 된다.
▶ root.context.xml 일부
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" rdf="dataSource"></property>
</bean>
스프링에 SqlSessionFactory를 등록하는 작업은 SqlSessionFactoryBean을 이용합니다. 패키지명을 보면 Mybatis의 패키지가 아니라 스프링과 연동 작업을 처리하는 mybatis-spring 라이브러리의 클래스임을 알 수 있다.
SqlSessionFactoryBean을 이용해서 SqlSession을 사용해 보는 테승트는 기존에 DataSourceTests 클래스에 추가해서 확인합니다.
▶ DataSourceTests 클래스의 일부
package org.noel.persistence;
import java.sql.Connection;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.noel.sample.SampleTests;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
@Autowired
private DataSource ds;
@Autowired
private SqlSessionFactory sessionFactory;
public void testConnection() {
@Test
public void testConnection2() {
try(SqlSession session = sessionFactory.openSession();
Connection con = session.getConnection()){
log.info(session);
log.info(con);
}catch(Exception e) {
e.printStackTrace();
}
}
}
testMyBatis()는 설정된 SqlSessionFactory 인터페이스 타입의 SqlSessionFactoryBean을 이용해서 생성하고, 이를 이용해서 Connection까지를테스트합니다. 테스트 코드가 정상적으로 실행된다면 아래와 유사한 로그가 출력되는 것을 볼 수 있습니다.
'Back-end > Spring Web Project' 카테고리의 다른 글
[Spring Web Project] 스프링 MVC의 기본 구조 (0) | 2023.11.21 |
---|---|
MyBatis와 스프링 연동(2) - Mapper XML 설정 (0) | 2023.11.15 |
[Spring Web Project] 스프링과 Oracle Database 연동(3) - 커넥션 풀 설정 (0) | 2023.11.13 |
[Spring Web Project] 스프링과 Oracle Database 연동(2) - JDBC 드라이버 연결 확인 (1) | 2023.11.13 |
[Spring Web Project] 스프링과 Oracle Database 연동(1) - Oracle 설치 및 설정 (1) | 2023.11.13 |