Hibernate는 인기 있는 Java용 오픈 소스 객체 관계형 매핑 솔루션입니다. 성능 향상을 위해 Hibernate는 캐싱 기능도 제공합니다. Hibernate는 첫 번째 수준 캐시와 두 번째 수준 캐시의 두 가지 유형의 캐싱을 제공합니다.
첫 번째 수준 캐시는 기본적으로 내장되어 사용되지만 사용이 제한되고 액세스할 수 없으며 프로세스 내 캐시 전용입니다. XNUMX단계 캐시는 플러그형 아키텍처를 제공하며, 이는 타사 캐시를 Hibernate용 XNUMX단계 캐시로 사용할 수 있음을 의미합니다.
NCache 코드를 변경하지 않고 구성할 수 있는 Hibernate Second Level Cache 공급자를 제공합니다. 이렇게 하면 에서 제공하는 다양한 분산 캐싱 기능에 액세스할 수 있습니다. 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>
최대 절전 모드는 캐시 영역 객체를 저장하기 위해. 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, 그리고 자바. 광범위한 특징과 기능이 함께 제공됩니다. 이러한 기능 중 하나는 다음을 통한 데이터베이스 동기화입니다. SQL 종속성. 여기에서 캐시는 데이터베이스의 변경 사항을 확인하고 오래되었거나 중복된 항목을 다시 로드하거나 제거합니다.
구성 옵션이 있습니다. 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로 사용하기에 적합한 옵션입니다.