[Mybatis] 2차 캐시 설정 방법

MyBatis는 2차 캐시를 사용하여 여러 SqlSession 간에 쿼리 결과를 공유하고 성능을 향상시킬 수 있습니다. 2차 캐시는 어플리케이션 전체에서 공유되는 캐시이며, 동일한 SQL 쿼리에 대한 결과를 저장합니다. 아래에 MyBatis에서 2차 캐시를 설정하는 방법을 제공하겠습니다.

  1. 2차 캐시 설정:

MyBatis의 2차 캐시를 사용하려면 먼저 SqlSessionFactory 설정에 2차 캐시를 활성화해야 합니다.

<configuration>
    <!-- 다른 설정들 -->
    
    <settings>
        <!-- 2차 캐시 활성화 -->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    
    <!-- 매퍼 등록 등 다른 설정들 -->
</configuration>` 
  1. 2차 캐시 유형 선택:

MyBatis는 여러 종류의 2차 캐시를 지원합니다. 대표적으로 org.apache.ibatis.cache.impl.PerpetualCache (기본값), org.apache.ibatis.cache.impl.SoftCache, org.apache.ibatis.cache.impl.LruCache 등이 있습니다. 각각의 캐시 유형은 서로 다른 메모리 관리 방식을 가지고 있습니다.

<configuration>
    <!-- 다른 설정들 -->
    
    <cache type="org.apache.ibatis.cache.impl.SoftCache"/> <!-- 2차 캐시 유형 설정 -->
    
    <!-- 매퍼 등록 등 다른 설정들 -->
</configuration>` 
  1. 매퍼 레벨에서 2차 캐시 비활성화:

특정 매퍼에서 2차 캐시를 비활성화하려면 매퍼 XML 파일에서 다음과 같이 설정할 수 있습니다.

<mapper namespace="your.package.UserMapper">
    <cache-ref namespace="org.apache.ibatis.cache.NullCache"/> <!-- 2차 캐시 비활성화 -->
    <!-- 나머지 매퍼 설정 -->
</mapper>` 

2차 캐시 설정은 어플리케이션의 전반적인 성능을 좌우할 수 있으므로 신중하게 설정해야 합니다. 이 설정을 사용하면 여러 SqlSession 간에 쿼리 결과를 공유할 수 있어 반복적인 쿼리 호출을 피하고 성능을 향상시킬 수 있습니다.