[Mybatis] cacheEnabled 설정을 통해 활성화 예제

cacheEnabled 설정을 통해 MyBatis의 2차 캐시를 활성화할 수 있습니다. 2차 캐시는 쿼리 결과를 캐싱하여 동일한 쿼리의 반복 실행 시 데이터베이스 접근을 줄여 성능을 향상시키는 기능입니다. 아래는 cacheEnabled 설정을 통해 2차 캐시를 활성화하는 예제입니다.

  1. 매퍼 XML 파일:

BookMapper.xml:

<!-- 2차 캐시를 활용하는 SELECT 쿼리 -->
<select id="getBookById" resultType="Book" useCache="true">
  SELECT * FROM books WHERE id = #{id}
</select>` 
  1. MyBatis 설정 파일:

mybatis-config.xml:

<configuration>
  <!-- ... -->
  
  <!-- 2차 캐시 활성화 설정 -->
  <settings>
    <setting name="cacheEnabled" value="true"/>
  </settings>
  
  <!-- ... -->
</configuration>` 
  1. Java 코드:
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class CacheEnabledExample {

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

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 첫 번째 쿼리 실행
            Book firstBook = sqlSession.selectOne("getBookById", 1);
            System.out.println("First Query Result: " + firstBook);

            // 두 번째 쿼리 실행 (2차 캐시 활용)
            Book secondBook = sqlSession.selectOne("getBookById", 1);
            System.out.println("Second Query Result: " + secondBook);
        }
    }
}` 

위의 예제에서 useCache="true" 속성을 통해 해당 쿼리에 2차 캐시를 활용하도록 설정하고, cacheEnabled 설정을 true로 설정하여 전체적으로 2차 캐시를 활성화하였습니다.

2차 캐시를 활성화하면 동일한 쿼리의 결과가 캐시에 저장되어 성능이 향상됩니다. 하지만 실제로 사용할 때에는 2차 캐시를 어떤 쿼리에 적용할 것인지, 어떤 시점에 캐시를 유지할 것인지 등을 신중하게 고려하여 설정해야 합니다.