[Mybatis] 캐시 무효화(캐시 관련 처리) 개념과 예제
캐시 무효화(Cache Invalidation)는 캐시에 저장된 데이터를 갱신하거나 제거하는 과정을 의미합니다. 데이터베이스나 외부 소스로부터 가져온 데이터를 캐시에 저장해 놓았을 때, 해당 데이터가 변경되거나 만료되었을 때 캐시를 갱신하거나 삭제하여 항상 최신 데이터를 유지하는 작업입니다.
MyBatis에서는 여러 가지 방법으로 캐시 무효화를 할 수 있습니다.
예제: 캐시 무효화
- 캐시 옵션 설정: MyBatis 설정 파일에서 캐시 관련 옵션을 설정합니다.
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>`
- 캐시 무효화:
SqlSession
의clearCache()
메서드를 호출하여 캐시를 모두 제거할 수 있습니다.
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 데이터 조회 및 캐시
sqlSession.selectList("selectAllBooks");
// 캐시 무효화
sqlSession.clearCache();
} finally {
sqlSession.close();
}`
- 특정 캐시 무효화: 특정 쿼리에 대한 캐시만 무효화하려면
namespace.statementId
를 지정하여clearCache()
메서드를 호출합니다.
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 특정 쿼리에 대한 캐시 무효화
sqlSession.clearCache("com.example.BookMapper.selectBookById");
} finally {
sqlSession.close();
}`
- 자동 캐시 무효화: 데이터를 추가, 수정 또는 삭제하는 쿼리를 실행할 때 자동으로 캐시가 무효화됩니다.
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 데이터 추가, 수정, 삭제
sqlSession.insert("insertBook", newBook);
sqlSession.update("updateBook", updatedBook);
sqlSession.delete("deleteBook", bookId);
// 자동 캐시 무효화
} finally {
sqlSession.close();
}`
캐시 무효화는 캐시를 효율적으로 관리하여 데이터의 일관성을 유지하고 최신 데이터를 보여주는 데 중요한 역할을 합니다. MyBatis는 다양한 방식으로 캐시 무효화를 지원하며, 프로젝트의 요구 사항에 맞게 선택하여 사용할 수 있습니다.