[Mybatis] 캐시 튜닝(Cache Tuning) 예제

MyBatis에서 캐시 튜닝을 수행하려면 MyBatis의 캐시 설정을 조정하고 필요에 따라 캐시를 사용하도록 설정해야 합니다. 아래의 예제에서는 MyBatis의 간단한 캐시 튜닝을 보여줍니다.

예제: 캐시 튜닝

  1. MyBatis 설정 파일에 캐시 설정 추가:

    MyBatis 설정 파일 (예: mybatis-config.xml)에 캐시 설정을 추가합니다. MyBatis는 두 가지 종류의 캐시를 지원합니다: 1차 캐시 (local cache)와 2차 캐시 (second-level cache)입니다.

    1차 캐시는 기본적으로 활성화되어 있으며, 기본적으로 동작합니다. 따로 설정할 필요가 없습니다.

    2차 캐시를 사용하려면 캐시 구현체 (예: Ehcache)를 추가하고 설정해야 합니다. 아래는 2차 캐시를 Ehcache로 설정하는 예제입니다.

<!-- mybatis-config.xml -->
<configuration>
    <!-- 2차 캐시 설정 -->
    <settings>
        <setting name="cacheEnabled" value="true" />
    </settings>
    
    <typeAliases>
        <!-- 도메인 클래스에 대한 별칭 설정 -->
        <typeAlias type="com.example.Employee" alias="Employee" />
    </typeAliases>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 2차 캐시 설정 -->
            <dataSource type="POOLED">
                <!-- 데이터베이스 연결 정보 설정 -->
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 매퍼 파일 설정 -->
    </mappers>
</configuration>` 
  1. 매퍼 XML 파일에 캐시 사용 설정:

    매퍼 XML 파일에서 캐시 사용을 설정합니다. <cache> 요소를 사용하여 매퍼별로 캐시 사용 여부를 지정할 수 있습니다.

<!-- EmployeeMapper.xml -->
<mapper namespace="com.example.EmployeeMapper">
    <!-- 이 매퍼에 대한 캐시 사용 설정 -->
    <cache />
    
    <!-- 실제 SQL 쿼리 등 다른 설정 -->
</mapper>` 
  1. Java 코드에서 캐시 튜닝:

    Java 코드에서는 MyBatis의 캐시 튜닝 기능을 활용하여 쿼리의 실행 및 결과 캐싱을 제어할 수 있습니다. 예를 들어, SqlSession.clearCache() 메서드를 사용하여 캐시를 수동으로 비울 수 있습니다.

@SpringBootApplication
public class MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }

    @Autowired
    private SqlSession sqlSession;

    public void executeQueries() {
        // 캐시 비우기
        sqlSession.clearCache();
        
        // MyBatis 쿼리 실행
        // ...
    }
}` 

위의 예제에서는 2차 캐시를 Ehcache로 설정하고, 매퍼 XML 파일에서 1차 캐시를 활성화하였습니다. Java 코드에서는 SqlSession.clearCache() 메서드를 사용하여 캐시를 비울 수 있습니다.

실제 캐시 튜닝은 프로젝트의 성능 요구 사항과 데이터베이스 사용 패턴에 따라 다르므로 필요에 따라 캐시 설정을 조정해야 합니다. MyBatis의 캐시 관련 설정은 프로젝트의 성능을 향상시키는데 중요한 역할을 합니다.