본문 바로가기
웹개발/spring && springboot

스프링 mybatis 캐시처리

by 지구별 여행자 임탱 2024. 4. 6.
728x90

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