Hibernate の第 XNUMX レベル キャッシュ

Hibernateは、Java用の人気のあるオープンソースのオブジェクトリレーショナルマッピングソリューションです。 パフォーマンスを向上させる目的で、Hibernateはキャッシュ機能も提供します。 Hibernateは、第XNUMXレベルのキャッシュと第XNUMXレベルのキャッシュのXNUMX種類のキャッシュを提供します。

ファーストレベルキャッシュは組み込みでデフォルトとして使用されますが、使用が制限されており、アクセスできず、インプロセスキャッシュのみです。 セカンドレベルキャッシュはプラグイン可能なアーキテクチャを提供します。つまり、サードパーティのキャッシュをHibernateのセカンドレベルキャッシュとして使用できます。

NCache Hibernate Second Level Cacheプロバイダを実装し、データベース実行の負荷を軽減し、SQLトラフィックを最小限に抑えます。これにより、コードを変更することなく直接設定が可能になり、アプリケーションはすぐに次のものにアクセスできるようになります。 NCacheの堅牢な分散キャッシュ機能群。

建築の NCache アプリケーション セッションとデータベース間の Hibernate セカンド レベル キャッシュ (L2) プロバイダーとして。
図1: NCache Hibernateの第XNUMXレベルのキャッシュプロバイダーとして

NCache Hibernateの第XNUMXレベルのキャッシュとして

セットアップ NCache Hibernateの第XNUMXレベルのキャッシュは非常に簡単です。 実際のコードを変更する必要はありません。 編集する必要があるのは構成ファイルのみです。

今すぐ追加します NCache Hibernateの第XNUMXレベルのキャッシュとして、hibernate.cfg.xmlは次の方法で編集する必要があります。

  • 2nd レベルキャッシュは、を設定して有効にする必要があります hibernate.cache.use_second_level_cache 真としてのプロパティ。
  • NCache を設定して、Hibernateのセカンドレベルキャッシュプロバイダーとして設定する必要があります hibernate.cache.region.factory_class Hibernate3.6以降のJCacheRegionFactoryとしてのプロパティ。

これは、で行われた変更の例です。 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 用の多用途で効率的かつ効果的な分散キャッシュです。幅広い機能セットを備えています。これらの機能の 1 つは、データベース同期です。 SQLの依存関係。 これは、キャッシュがデータベースに変更がないかチェックし、古いまたは冗長であることが判明したアイテムを再ロードまたは削除する場所です。

NCache ネイティブデータベース通知(SQL依存やOracle依存など)を利用してHibernate L2キャッシュを同期します。これにより、サードパーティアプリケーションがデータベースを変更した場合でも、 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>

Hibernateクエリキャッシュ構成

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レベルのキャッシュとして

主な理由は次のとおりです NCache は、アプリケーションがマルチサーバー環境で実行されているHibernateの第XNUMXレベルのキャッシュとして使用するのに適したオプションです。

  • Java アプリケーション向けキャッシュの線形スケーラビリティ: NCache 可能 線形スケーラビリティ 実行時にキャッシュサーバーをクラスタに追加できるようにすることで、ストレージ容量とトランザクションスループットの両方が向上し、ユーザー負荷の増加に応じてHibernateアプリケーションのパフォーマンスが維持されます。
  • 分散キャッシュトポロジによる高可用性: NCache は非常に柔軟なキャッシュです。つまり、ユーザーに豊富なセットを提供します。 キャッシングトポロジ ミラートポロジ、レプリケートトポロジ、パーティショントポロジ、レプリカトポロジのパーティションなど。 各トポロジは特定のシナリオとニーズに対応しているため、柔軟性があります。
  • データベースの同期: あなたはするオプションがあります キャッシュをデータベースと同期する SQL Server、Oracleなど。そうすることで、キャッシュはデータベースに変更がないかチェックし、その変更に基づいてアイテムをキャッシュから削除または保持します。 これにより、キャッシュに常に最新のアイテムが含まれるようになります。
  • レイテンシを短縮する非ブロッキング非同期操作: 非同期操作 でご利用いただけます NCache。 これらの操作により、キャッシュが更新されるのを待たずにアプリケーションで作業できるため、すべてが高速になります。 これらの操作はHibernateで有効にできます。

次はどうする?

よくある質問(FAQ)

あなたは NCache Hibernateの2次キャッシュとして有効にすることで hibernate.cache.use_second_level_cache hibernate.cfg.xmlのプロパティを設定し、 hibernate.cache.region.factory_class 〜へ JCacheRegionFactoryこのセットアップでは、アプリケーション コードを変更する必要はありません。

はい、 NCache Hibernateクエリキャッシュを完全にサポートしています。有効にするには、 hibernate.cache.use_query_cache プロパティへ true 設定ファイルで、Javaコードで特定のクエリをキャッシュ可能としてマークするには、 setCacheable(true) 方法。

NCache ネイティブデータベース通知(SQL依存関係)を使用して、SQL ServerやOracleなどのデータベースと同期します。データベース内のデータが変更されると、 NCache データが古くなるのを防ぐために、分散キャッシュ内の対応する Hibernate エンティティを自動的に無効化または再ロードします。

はい、 NCache Hibernateバージョン3.6から6.xまでと互換性があります。JCache(JSR-107)標準を利用して、様々なJava環境で動作する分散キャッシュプロバイダを提供します。

NCache 実行時にキャッシュサーバーをクラスタに追加できるようにすることで、Hibernateアプリケーションに線形スケーラビリティを提供します。この分散アーキテクチャにより、アプリケーションのダウンタイムを必要とせずに、ストレージ容量とトランザクションスループットの両方が向上します。

お問い合わせ

電話

+1 214-619-2601 (米国)

+44 20 7993 8327 (英国)

©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。