Hibernate 프레임워크의 쿼리 캐싱 기능은 쿼리 성능을 향상시키고 쿼리 결과를 캐싱하여 반복적인 쿼리 실행을 방지할 수 있습니다. 작동 원리는 세션 수준과 전역 수준을 포함하는 2단계 캐싱이며 캐싱은 @Cacheable 주석을 통해 활성화됩니다. 캐시된 데이터는 명시적으로 삭제되거나 만료될 때까지 모든 세션에서 공유됩니다. 캐시를 명시적으로 지우는 방법으로는 session.clear(), session.evict() 등이 있으며, 쿼리 결과가 변경되면 자동으로 투명한 지우기가 수행됩니다.
Hibernate Framework의 쿼리 캐싱
Overview
쿼리 캐싱은 쿼리 결과를 캐싱하여 쿼리 성능을 향상시키는 Hibernate 프레임워크에서 제공하는 기능입니다. 후속 쿼리가 캐시에 도달하면 Hibernate는 쿼리를 다시 실행하는 대신 캐시에서 직접 결과를 반환합니다.
작동 방식
Hibernate의 쿼리 캐시는 다음을 포함하는 2레벨 캐시입니다.
Hibernate는 쿼리를 실행할 때 먼저 첫 번째 레벨 캐시를 확인합니다. 쿼리 결과가 첫 번째 수준 캐시에 없으면 쿼리를 실행하고 결과를 첫 번째 수준 캐시에 캐시합니다.
쿼리 캐싱이 활성화된 경우 Hibernate는 쿼리 결과를 두 번째 수준 캐시에 캐시합니다. 두 번째 수준 캐시의 결과는 명시적으로 지워지거나 캐시가 만료될 때까지 모든 세션에서 공유됩니다.
실용 사례:
Employee
엔터티가 있고 특정 직원을 찾기 위해 쿼리를 자주 실행한다고 가정합니다. Employee
实体,并且我们频繁执行查找特定员工的查询:
Query query = session.createQuery("from Employee where id = :id"); query.setParameter("id", employeeId); List<Employee> employees = query.list();
为了缓存这个查询结果,我们可以使用 @Cacheable
注解:
@Entity @Cacheable public class Employee { // ... }
这样,当我们执行相同的查询时,Hibernate 会先从缓存中查找结果。如果缓存中没有结果,它才会执行查询并缓存结果。
清除缓存
有两种主要方式可以清除 Hibernate 缓存:
session.clear()
或 session.evict()
rrreee@를 사용할 수 있습니다. 캐시 가능
참고: Hibernate 캐시를 지우는 두 가지 주요 방법이 있습니다:
session.clear()
또는 session.evict() 사용
방법. 위 내용은 쿼리 캐싱은 Hibernate 프레임워크에서 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!