[SPRING] 마이바티스(MyBatis)란❓

수경·2025년 3월 26일

SpringFrameWork

목록 보기
18/24
post-thumbnail

MyBatis 란❓

스프링(Spring) 프레임워크와 함께 사용되는 데이터 매핑 프레임워크이며 SQL 기반의 매핑을 제공한다.

MyBatis의 역할

MyBatis는 기본적으로 Java 애플리케이션과 데이터베이스 간의 데이터 매핑을 담당하는 역할을 한다. 이를 통해 SQL 쿼리를 객체와 연동시켜서 데이터를 쉽게 주고받을 수 있도록 도와준다.

스프링에서 MyBatis쿼리 작성과 객체 매핑을 분리하여, 데이터베이스와의 연결을 단순화하면서도 더 세밀한 제어가 가능하게 해준다. MyBatis 는 기본적으로 SQL을 직접 작성하여 사용하는데, 이로 인해 복잡한 쿼리를 자유롭게 작성하고 최적화할 수 있다.

MyBatis의 주요 역할

  • SQL을 실행 및 매핑한다.
  • MyBatisSQL을 XML 파일 또는 애너테이션을 통해 정의하고 이를 Java 객체와 매핑하여 데이터를 처리한다.
    예를 들어, SQL 쿼리를 XML 파일에 작성하고 이를 Java 객체와 매핑하여 결과를 반환받거나, 객체를 쿼리 조건에 맞게 삽입할 수 있다.

🌿데이터베이스와의 연결 관리

MyBatis 는 데이터베이스와의 연결을 설정하고 관리하는 역할도 한다. SqlSessionFactorySqlSession 을 통해 데이터베이스와 연결을 유지하며, 트랜잭션 관리를 할 수 있다.

🤔SqlSessionFactory 란?

SqlSessionFactoryMyBatis 에서 SqlSession 객체를 생성하는 역할을 하는 인터페이스이다.

즉, 데이터베이스와의 세션(SqlSession)을 열어주는 팩토리(Factory) 패턴을 따르는 객체 를 말한다.

SqlSessionFactory 의 주요 기능

1. SqlSession 객체 생성

  • openSession() 메서드를 사용하여 SqlSession 객체를 생성한다.

2. MyBatis 환경 설정 로드

  • MyBatis 설정 파일(mybatis-config.xml)을 읽고 설정을 적용한다.

3. DB 연결 관리

  • DataSource를 통해 데이터베이스 연결을 관리한다.

  • 캐싱 지원

SqlSessionFactory 사용 방법

  1. <mybatis-config.xml> 설정 (MyBatis 환경 설정 파일)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/MemberMapper.xml"/>
    </mappers>
</configuration>

📌 역할: MyBatis 설정 파일로 DB 연결 정보 및 Mapper 파일을 등록한다.

🤔SqlSession 란?

MyBatis에서 SQL 실행, 트랜잭션 관리, 매핑된 SQL 호출 등을 담당하는 인터페이스이다. MyBatis에서 DB와의 연결을 관리하는 핵심 객체이며, 주로 DAO(데이터 액세스 객체)에서 사용된다.

SqlSession 의 주요 기능

1. SQL 실행

  • selectOne() , selectList(), insert(), update , delete() 등의 메서드를 사용해 SQL을 실행한다.

2. 트랜잭션 관리

  • commit() 또는 rollback() 을 사용해 트랜잭션을 수동으로 관리할 수 있습니다.

  • 자동 커밋 모드(autoCommit = true) 로 설정하면, SQL 실행 후 자동으로 커밋된다.

3. Mapper 인터페이스와의 연동

  • getMapper(Class<T> type) 을 사용하여 MyBatis 매퍼 인터페이스를 가져와 사용할 수 있다.

동적 SQL 지원

MyBatis 는 동적 SQL을 지원하여 조건에 따라 쿼리를 동적으로 변경할 수 있다. 예를 들어, 특정 조건에 따라 SELECT , INSERT , UPDATE , DELETE 쿼리를 동적으로 생성할 수 있어, 복잡한 쿼리도 유연하게 작성할 수 있다.

MyBatis를 사용하는 이유

1. SQL 작성 방식의 유연성

  • XML 파일 또는 애너테이션을 사용해 SQL을 작성할 수 있어 유지보수와 가독성이 뛰어나다.

2. 동적 SQL 지원

  • <if>, <choose>, <foreach> 등의 태그를 활용해 조건에 따라 SQL을 동적으로 생성 가능하다.

  • 사용자 입력값에 따라 SELECT , INSERT, UPDATE, DELETE 쿼리를 유연하게 작성할 수 있다.

MyBatis의 장점

1. 스프링과의 강력한 통합

  • 스프링의 트랜잭션 관리, DI(의존성 주입), AOP 등의 기능을 자연스럽게 활용 가능하다.

  • @Mapper 애너테이션과 스프링 MyBatis 모듈을 활용하면 DAO 객체를 자동으로 주입할 수 있다.

2. 직관적인 SQL 관리

  • SQL을 XML로 분리해 가독성을 높이고 유지보수를 쉽게 할 수 있다.

3. 유연한 데이터 매핑 (ResultMap)

  • SQL 실행 결과를 Java 객체와 자동으로 매핑하여 편리한 데이터 처리 가능하다.

🗒️MemberDAOImpl.java

🗒️member.xml

profile
개발 공부중•••

0개의 댓글