MyBatis에서 캐시 처리는 데이터베이스와의 상호작용 성능을 향상시키기 위해 중요한 기능 중 하나입니다. MyBatis는 내부적으로 두 가지 유형의 캐시를 지원합니다. 세션 캐시(1차 캐시)와 글로벌 캐시(2차 캐시)입니다.
세션 캐시(1차 캐시)
세션 캐시는 SqlSession의 생명주기와 동일하며, 같은 세션 내에서 동일한 쿼리를 반복 실행할 때 데이터베이스에 대한 추가적인 호출 없이 결과를 반환합니다.
특징: 자동으로 활성화되며, 별도로 비활성화 설정을 할 수 없습니다.
글로벌 캐시(2차 캐시)
글로벌 캐시는 여러 세션 간에 공유되며, 데이터를 더 넓은 범위에서 캐싱하여 성능을 향상시킵니다.
활성화/비활성화: configuration 파일에서 cacheEnabled 설정을 통해 활성화 또는 비활성화할 수 있습니다. 기본값은 true입니다.
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
</settings>
...
</configuration>
캐시 설정 예제
<mapper namespace="userDao">
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
...
</mapper>
* eviction: 캐시에서 객체를 제거하는 정책을 설정합니다. (FIFO, LRU, SOFT, WEAK)
* flushInterval: 캐시를 자동으로 비우는 시간 간격을 설정합니다. (밀리초 단위)
* size: 참조할 수 있는 객체의 최대 개수를 설정합니다.
* readOnly: true로 설정하면 캐시 객체를 읽기 전용으로 사용합니다. 성능이 향상될 수 있지만, 객체를 수정할 수 없습니다.
MyBatis의 캐시 처리 기능을 통해 애플리케이션의 성능을 향상시킬 수 있습니다. 하지만, 실시간으로 데이터가 변경되는 환경에서는 캐시로 인해 최신 데이터를 반영하지 못하는 문제가 발생할 수 있으므로, 캐시 사용 시 이러한 점을 고려해야 합니다.
'웹개발 > spring && springboot' 카테고리의 다른 글
SPRING PSA(Portable Service Abstraction) (0) | 2024.04.17 |
---|---|
스프링 mybais 인터페이스 (0) | 2024.04.06 |
스프링 mybais 동적쿼리 작성 (0) | 2024.04.06 |
스프링 mybatis 쿼리 작성 (0) | 2024.04.06 |
스프링 mybatis 설정 (0) | 2024.04.06 |