Hibernate는 인기 있는 Java용 오픈 소스 객체 관계형 매핑 솔루션입니다. 성능 향상을 위해 Hibernate는 캐싱 기능도 제공합니다. Hibernate는 첫 번째 수준 캐시와 두 번째 수준 캐시의 두 가지 유형의 캐싱을 제공합니다.
첫 번째 수준 캐시는 기본적으로 내장되어 사용되지만 사용이 제한되고 액세스할 수 없으며 프로세스 내 캐시 전용입니다. XNUMX단계 캐시는 플러그형 아키텍처를 제공하며, 이는 타사 캐시를 Hibernate용 XNUMX단계 캐시로 사용할 수 있음을 의미합니다.
NCache Hibernate Second Level Cache 공급자를 구현하여 데이터베이스 실행 부하를 줄이고 SQL 트래픽을 최소화합니다. 이를 통해 코드 변경 없이 직접 구성할 수 있으며, 애플리케이션에서 즉시 캐시에 접근할 수 있습니다. NCache강력한 분산 캐싱 기능 모음입니다.
설정 NCache Hibernate를 위한 XNUMX단계 캐시가 매우 쉽기 때문입니다. 실제 코드를 변경할 필요가 없습니다. 구성 파일만 편집하면 됩니다.
이제 추가하려면 NCache Hibernate용 Second Level Cache로서 hibernate.cfg.xml은 다음과 같은 방식으로 편집되어야 합니다.
다음은 최대 절전 모드.cfg.xml 파일 :
<hibernate-configuration>
<session-factory>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property>
...
</session-factory>
</hibernate-configuration>
호환성 참고: 이 구성은 Hibernate 버전 3.6부터 6.x까지 호환되며 JCache(JSR-107) 표준을 사용하는 모든 Java 환경을 지원합니다.
최대 절전 모드는 캐시 영역 객체를 저장하기 위해. NCache 다른 속성으로 이러한 캐시 영역을 구성할 수 있습니다. 그만큼 NCache이를 위해 Hibernate.xml 파일이 사용된다. 이 파일에는 다음에서 사용하는 지역 및 관련 구성에 대한 모든 구성 설정 및 옵션이 포함되어 있습니다. NCache.
다음은 샘플입니다 NCache영역이 구성된 Hibernate.xml 구성 파일:
<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
<cache-regions>
<region name="hibernator.BLL.Customer:Customer" cache-name="myPartitionedcache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
<region name="DefaultRegion" cache-name="myPartitionedcache" priority="default" expiration-type="none" expiration-period="0" />
</cache-regions>
...
</application-config>
</configuration>
NCache 는 .NET Framework, .NET Core 및 Java를 위한 다재다능하고 효율적이며 효과적인 분산 캐시입니다. 다양한 기능과 특징을 제공하며, 그중 하나는 데이터베이스 동기화 기능입니다. SQL 종속성. 여기에서 캐시는 데이터베이스의 변경 사항을 확인하고 오래되었거나 중복된 항목을 다시 로드하거나 제거합니다.
NCache Hibernate L2 캐시를 동기화하기 위해 네이티브 데이터베이스 알림(예: SQL 종속성 또는 Oracle 종속성)을 활용합니다. 이를 통해 타사 애플리케이션이 데이터베이스를 수정하는 경우, NCache 영향을 받는 Hibernate 엔티티를 자동으로 무효화하거나 다시 로드합니다. 이 기능을 활성화하려면 다음 변경 사항을 적용하십시오. NCache최대 절전 모드.xml 파일 :
<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
...
<database-dependencies>
<dependency entity-name="hibernator.BLL.Customer" type="oracle" sql-statement="select ContactName from Customer where CustomerID ='?'" cache-key-format="hibernator.BLL.Customer#[pk]" connection-string="Your Connection String"/>
</database-dependencies>
</application-config>
</configuration>
최대 절전 모드는 다음과 같은 기능을 제공합니다. 쿼리 캐싱. 여기서 쿼리 결과는 Second Level Cache에 캐시됩니다. NCache 이 기능을 사용하여 이러한 쿼리를 캐시할 수 있습니다. 이 기능은 최대 절전 모드.cfg.xml 다음과 같은 방법으로 파일:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
쿼리 캐시를 활성화하면 기본적으로 각 쿼리가 캐시되지 않습니다. 대신 캐시해야 하는 쿼리는 코드에서 캐시 가능하도록 설정해야 합니다. 쿼리를 캐시 가능하게 설정하려면 쿼리를 생성하는 동안 쿼리의 setCacheable(true) 함수를 호출합니다. 아래 코드는 캐시 가능한 쿼리를 보여주는 예입니다.
List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list();
그 주된 이유는 다음과 같습니다. NCache 애플리케이션이 다중 서버 환경에서 실행되는 Hibernate의 Second Level Cache로 사용하기에 적합한 옵션입니다.
hibernate.cache.use_second_level_cache hibernate.cfg.xml 파일의 속성을 설정하고 hibernate.cache.region.factory_class 에 JCacheRegionFactory이 설정은 애플리케이션 코드를 변경할 필요가 없습니다.hibernate.cache.use_query_cache 재산 true 구성 파일에서 특정 쿼리를 Java 코드에서 캐시 가능하도록 표시하세요. setCacheable(true) 방법.