Hibernateは、Java用の人気のあるオープンソースのオブジェクトリレーショナルマッピングソリューションです。 パフォーマンスを向上させる目的で、Hibernateはキャッシュ機能も提供します。 Hibernateは、第XNUMXレベルのキャッシュと第XNUMXレベルのキャッシュのXNUMX種類のキャッシュを提供します。
ファーストレベルキャッシュは組み込みでデフォルトとして使用されますが、使用が制限されており、アクセスできず、インプロセスキャッシュのみです。 セカンドレベルキャッシュはプラグイン可能なアーキテクチャを提供します。つまり、サードパーティのキャッシュをHibernateのセカンドレベルキャッシュとして使用できます。
NCache コードを変更せずに構成できるHibernateの第XNUMXレベルのキャッシュプロバイダーを提供します。 そうすることで、によって提供される分散キャッシング機能の豊富なセットにアクセスできます。 NCache.
セットアップ NCache Hibernateの第XNUMXレベルのキャッシュは非常に簡単です。 実際のコードを変更する必要はありません。 編集する必要があるのは構成ファイルのみです。
今すぐ追加します NCache Hibernateの第XNUMXレベルのキャッシュとして、hibernate.cfg.xmlは次の方法で編集する必要があります。
これは、で行われた変更の例です。 hibernate.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は キャッシュリージョン オブジェクトを保存するため。 NCache さまざまなプロパティを使用してこれらのキャッシュ領域を構成できます。 The 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。 幅広い機能セットが付属しています。 これらの機能のXNUMXつは、データベースの同期です。 SQLの依存関係。 これは、キャッシュがデータベースに変更がないかチェックし、古いまたは冗長であることが判明したアイテムを再ロードまたは削除する場所です。
構成するオプションがあります NCache Hibernateがデータベース同期機能を使用するための第XNUMXレベルのキャッシュプロバイダーとして。 次の変更をに適用する必要があります 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>
Hibernateは次の機能を提供します クエリキャッシュ。 ここで、クエリの結果は第XNUMXレベルのキャッシュにキャッシュされます。 NCache この機能を使用して、このようなクエリをキャッシュできます。 この機能は、編集することで有効にできます hibernate.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の第XNUMXレベルのキャッシュとして使用するのに適したオプションです。