[Mybatis] 커스텀 구성(Configuration) 개념과 예제

MyBatis의 커스텀 구성은 MyBatis의 동작을 개별적으로 조정하거나 확장하는 것을 의미합니다. 커스텀 구성을 통해 MyBatis의 기본 동작을 수정하거나 확장하여 특정 요구 사항에 맞게 조정할 수 있습니다. 이를 통해 데이터베이스 접속, 트랜잭션 관리, 로깅 등 다양한 측면을 개별적으로 설정할 수 있습니다.

예제: 커스텀 구성

  1. 매퍼와 설정 XML 파일 분리: MyBatis 설정과 매퍼의 내용을 분리하여 관리하도록 설정 파일을 구성합니다.
<!-- mybatis-config.xml -->
<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="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/BookMapper.xml"/>
    </mappers>
</configuration>` 
<!-- com/example/BookMapper.xml -->
<mapper namespace="com.example.BookMapper">
    <!-- 매퍼 내용 -->
</mapper>` 
  1. 커스텀 구성 클래스 생성: org.apache.ibatis.session.Configuration 클래스를 확장하여 커스텀 구성 클래스를 생성합니다.
import org.apache.ibatis.session.Configuration;

public class CustomConfiguration extends Configuration {
    public CustomConfiguration() {
        // 추가적인 설정 또는 확장 작업 수행
    }
}` 
  1. 커스텀 구성 사용: 커스텀 구성 클래스를 사용하여 SqlSessionFactory를 생성합니다.
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;

public class CustomConfigurationExample {

    public static void main(String[] args) {
        InputStream inputStream = CustomConfigurationExample.class.getResourceAsStream("/mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // sessionFactory 사용
    }
}` 

커스텀 구성을 사용하면 MyBatis의 기본 설정을 수정하거나 확장할 수 있습니다. 위의 예제에서는 데이터베이스 접속 설정을 외부화하고, 커스텀 구성 클래스를 생성하여 특정 동작을 확장하는 방법을 보여주고 있습니다. 이를 활용하여 프로젝트의 요구 사항에 맞게 MyBatis의 동작을 조정할 수 있습니다.