[java] MyBatis에서 캐시 사용하기
MyBatis는 많은 쿼리를 실행할 때 데이터베이스 부하를 줄이기 위해 캐시를 사용할 수 있는 기능을 제공합니다. 캐시는 반복적으로 실행되는 쿼리 결과를 메모리에 저장하여 다음에 동일한 쿼리가 실행될 때 데이터베이스에 접근하지 않고 바로 결과를 반환합니다. 이를 통해 쿼리의 성능을 향상시킬 수 있습니다.
MyBatis에서 캐시를 사용하기 위해서는 다음과 같은 단계를 수행해야 합니다.
캐시 설정하기
먼저, MyBatis 설정 파일에 캐시 관련 설정을 추가해야 합니다.
<configuration>
<!-- ... -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- ... -->
</configuration>
위의 예제에서는 cacheEnabled
속성을 true
로 설정하여 캐시를 사용하도록 합니다.
Mapper에서 캐시 사용하기
캐시를 사용할 Mapper에 다음과 같이 useCache
속성을 추가합니다.
<mapper namespace="com.example.MyMapper">
<!-- ... -->
<select id="getUsers" resultType="com.example.User" useCache="true">
SELECT * FROM users
</select>
<!-- ... -->
</mapper>
위의 예제에서는 getUsers
쿼리를 실행할 때 캐시를 사용하도록 설정했습니다. useCache
속성을 true
로 설정하면 해당 쿼리 결과가 캐시에 저장되고, 동일한 쿼리가 실행될 때는 캐시에서 결과를 반환합니다.
캐시 옵션 설정하기
캐시에 대한 상세한 옵션을 설정하려면 cache
요소를 사용합니다. cache
요소에는 다음과 같은 속성을 설정할 수 있습니다.
type
: 캐시 구현체의 클래스를 지정합니다.size
: 캐시의 크기를 지정합니다. 기본값은 1024입니다.flushInterval
: 캐시를 주기적으로 비우는 간격을 지정합니다. 단위는 밀리초(ms)이며, 기본값은 60000(1분)입니다.
예를 들어, 다음과 같이 캐시를 구체적으로 설정할 수 있습니다.
<cache type="org.mybatis.caches.ehcache.EhcacheCache">
<property name="size" value="100"/>
<property name="flushInterval" value="30000"/> <!-- 30초마다 캐시 비우기 -->
</cache>
위의 예제에서는 EhcacheCache
를 캐시 구현체로 사용하고, 캐시의 크기는 100으로 설정하고 30초마다 캐시를 비우도록 설정했습니다.