MyBatis와 스프링 연동(1) - MyBatis 연동

2023. 11. 14. 22:37· Back-end/Spring Web Project
목차
  1. MyBatis
  2. MyBatis 관련 라이브러리 추가
  3. SQLSessionFactory

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와 스프링 연동용 라이브러리

MyBatis

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

MyBatis Spring

<!-- 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
  1. MyBatis
  2. MyBatis 관련 라이브러리 추가
  3. SQLSessionFactory
'Back-end/Spring Web Project' 카테고리의 다른 글
  • [Spring Web Project] 스프링 MVC의 기본 구조
  • MyBatis와 스프링 연동(2) - Mapper XML 설정
  • [Spring Web Project] 스프링과 Oracle Database 연동(3) - 커넥션 풀 설정
  • [Spring Web Project] 스프링과 Oracle Database 연동(2) - JDBC 드라이버 연결 확인
noeul.log
noeul.log
새싹 개발자의 개발일지
noeul.log
한 페이지가 될 수 있게🍀
noeul.log
전체
오늘
어제
  • 전체보기 (55)
    • Back-end (22)
      • Spring Web Project (16)
      • Spring (2)
      • Java (3)
    • DB (1)
      • Oracle (1)
    • CS (2)
      • 🛠️ 컴퓨터 구조 (0)
      • 🛠️ 운영체제(OS) (1)
      • 🛠️ 시스템 소프트웨어 (0)
      • 🛠️ 네트워크 (1)
      • 🛠️ 소프트웨어 공학과 협업 프로세스 (0)
    • AWS (4)
    • GitHub & Git (6)
    • 프로그래머스 (12)
    • 취뽀여정 (2)
    • IT 알쓸신잡 (2)
    • Tistory 튜토리얼 (2)
    • IT 도서 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.1
noeul.log
MyBatis와 스프링 연동(1) - MyBatis 연동
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.