MyBatis란?
먼저 MyBatis부터 알아보자.
MyBatis는 자바 진영에서 널리 사용되는 퍼시스턴스 프레임워크(Persistence Framework)이다.
🤔Persistence Framework?🤔
-> 데이터베이스와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크
종류에는
SQL Mapper(SQL문장으로 직접 데이터베이스를 다루는 SQL Helper) : e.g. Mybatis,
ORM (객체를 통해 간접적으로 데이터베이스를 다루는 ORM) : e.g. Hibernate, JPA가 있다.
개발자가 SQL을 직접 제어하면서도 JDBC의 복잡한 설정을 간소화할 수 있게 해주는 강력한 도구라고 볼 수 있다.
JDBC를 사용할 때 필요한 반복적인 코드(커넥션 관리, PreparedStatement 생성, ResultSet 처리 등)을 MyBatis가 자동으로 처리해준다는 장점이 있다!
MyBatis의 핵심 구성 요소
MyBatis의 핵심 구성 요소로는 두 가지가 있다.
1. SqlSessionFactory
SqlSessionFactory는 MyBatis의 핵심 컴포넌트로, 데이터베이스와의 연결과 SQL 실행을 위한 세션을 생성한다.
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
}
위 코드는 Spring Boot 환경에서 SqlSessionFactory를 설정하는 기본적인 방법을 보여준다.
DataSource를 주입받아 SqlSessionFactory를 생성하는 것을 위 예시를 통해 볼 수 있다.
2. Mapper 인터페이스
Mapper 인터페이스는 SQL 문을 실행하기 위한 메서드를 정의하는 인터페이스이다.
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(Long id);
@Insert("INSERT INTO users (name, email) VALUES (#{name}, #{email})")
void insertUser(User user);
}
위 예시는 간단한 Mapper 인터페이스를 보여주는데, 어노테이션을 사용하여 SQL을 직접 정의 할 수도 있고,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
위의 예시처럼 XML 매핑 파일을 통해서도 SQL을 관리할 수 있다.
XML 매핑 방식은 SQL 쿼리를 별도의 XML 파일로 관리할 수 있어 복잡한 쿼리나 동적 SQL을 작성할 때 유용하다.
그럼 MyBatis와 Spring을 어떻게 연동시킬까?
Spring과 MyBatis를 연동하면 Spring의 강력한 DI(의존성 주입)와 트랜잭션 관리 기능을 활용할 수 있다는 것은 위에서도 설명이 되었기에 이해할 것이다.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
이렇게 MyBatis Spring Boot Starter를 사용하면 별도의 복잡할 설정 없이도 Spring Boot 애플리케이션에서 MyBatis를 바로 사용할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] ✨ QueryDSL 개념알기 ✨ (1) | 2025.01.20 |
---|---|
[Spring] JPA와 Spring Data JPA가 뭘까??? (0) | 2025.01.20 |
[Spring] JdbcTemplate으로 데이터베이스 접근하기! (1) | 2025.01.20 |
[Spring] 🔎 DataSource와 트랜잭션 개념정리 🔎 (2) | 2025.01.20 |
[Spring] Controller의 Return Type과 Parameter 가이드 👍 (1) | 2025.01.20 |