Record
목차
2차 캐시 설정
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
<mapper namespace="com.example.mapper.OrderMapper">
<!-- 캐시 설정 -->
<cache/>
<!-- select 쿼리 정의 -->
<select id="selectOrders" resultType="com.example.model.Order">
SELECT * FROM orders WHERE client_id = #{clientId}
</select>
</mapper>
<mapper namespace="com.example.mapper.OrderMapper">
<!-- 캐시 설정 예제 -->
<cache
eviction="LRU" <!-- 캐시 삭제 정책: LRU (Least Recently Used) -->
flushInterval="60000" <!-- 캐시 플러시 간격: 60초 -->
size="512" <!-- 캐시 크기: 512개 객체 -->
readOnly="true" <!-- 읽기 전용 캐시 설정 -->
/>
<!-- select 쿼리 정의 -->
<select id="selectOrders" resultType="com.example.model.Order">
SELECT * FROM orders WHERE client_id = #{clientId}
</select>
</mapper>
package com.example.mapper;
import com.example.model.Order;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface OrderMapper {
@Select("SELECT * FROM orders WHERE client_id = #{clientId}")
List<Order> selectOrders(int clientId);
}
캐시 비활성화
– 방벙 1
<mapper namespace="com.example.mapper.OrderMapper">
<!-- select 쿼리 정의 -->
<select id="selectOrders" resultType="com.example.model.Order" useCache="false">
SELECT * FROM orders WHERE client_id = #{clientId}
</select>
</mapper>
– 방벙 2
<mapper namespace="com.example.mapper.OrderMapper">
<!-- <cache/> 요소를 추가하지 않음 -->
<!-- select 쿼리 정의 -->
<select id="selectOrders" resultType="com.example.model.Order">
SELECT * FROM orders WHERE client_id = #{clientId}
</select>
</mapper>
– 방법3 MyBatis 설정 파일에서 전역적으로 캐시를 비활성화
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
</settings>
</configuration>