[Mybatis] 캐시 유형 선택 예제
MyBatis에서는 크게 두 가지 유형의 캐시를 사용할 수 있습니다: 1차 캐시(Local Cache)와 2차 캐시(Second Level Cache)입니다. 아래 예제에서는 각 유형의 캐시를 어떻게 설정하고 사용하는지에 대한 예시를 제공합니다.
- 1차 캐시(Local Cache):
1차 캐시는 SqlSession
내에서 쿼리 결과를 캐싱하는 기능입니다. 한 SqlSession
내에서 같은 쿼리를 여러 번 실행해도 데이터베이스에는 단 한 번만 요청이 전달됩니다. 다음 예제에서는 1차 캐시를 사용하는 방법을 보여줍니다.
try (SqlSession sqlSession = sessionFactory.openSession()) {
// 첫 번째 쿼리 실행
Book firstBook = sqlSession.selectOne("getBookById", 1);
System.out.println("First Query Result: " + firstBook);
// 두 번째 쿼리 실행 (1차 캐시 활용)
Book secondBook = sqlSession.selectOne("getBookById", 1);
System.out.println("Second Query Result: " + secondBook);
}`
- 2차 캐시(Second Level Cache):
2차 캐시는 여러 SqlSession
사이에서 쿼리 결과를 공유하는 기능입니다. 이는 여러 SqlSession
간에 동일한 쿼리를 실행하면 캐시된 결과를 사용하여 성능을 향상시킵니다. 다음 예제에서는 2차 캐시를 사용하는 방법을 보여줍니다.
매퍼 XML 파일:
BookMapper.xml
:
<select id="getBookById" resultType="Book" useCache="true">
SELECT * FROM books WHERE id = #{id}
</select>`
MyBatis 설정 파일:
mybatis-config.xml
:
<configuration>
<!-- ... -->
<!-- 2차 캐시 활성화 설정 -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- ... -->
<!-- 2차 캐시 설정 -->
<typeAliases>
<typeAlias alias="Book" type="your.package.Book"/>
</typeAliases>
<cache type="org.apache.ibatis.cache.impl.PerpetualCache" />
</configuration>`
위의 예제에서 useCache="true"
속성을 사용하여 쿼리에 2차 캐시를 활용하도록 설정하고, cache
요소를 사용하여 2차 캐시를 설정하였습니다.
이러한 예제를 참고하여 1차 캐시와 2차 캐시를 사용하여 쿼리 결과를 효과적으로 캐싱하고 성능을 개선할 수 있습니다.