Hibernateは、Java言語用のオブジェクトリレーショナルマッピングライブラリです。 Javaクラスからデータベーステーブルへのマッピングを提供し、全体的な開発サイクルを短縮します。 Hibernateが提供する利点のために、Hibernateを使用して開発されるトランザクションの多いアプリケーションはますます増えています。 これは、JavaアプリケーションでのHibernateの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.hibernate.*; public class HibernateSample { ... Session session = factory.openSession(); session = factory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from Customer c"); Iterator it = query.list().iterator(); while (it.hasNext ()){ Customer customer = (Customer) it.next(); ... } tx.commit(); session.close(); } |
ただし、これらのトラフィックの多いHibernateアプリケーションでは、スケーラビリティに関する大きな問題が発生しています。 アプリケーション層レベルで拡張することはできますが、データベースまたはデータストレージは、トランザクション負荷の増加に応じて拡張することはできません。
Java分散キャッシングは、スケーラビリティのボトルネックを引き起こしているデータベースへの高額な移動を減らすため、この問題を解決するための最良の手法です。 このため、Hibernateは第XNUMXレベルと第XNUMXレベルのキャッシュを含むキャッシングインフラストラクチャを提供します。
Hibernateの第XNUMXレベルのキャッシュは、に関連付けられている基本的なスタンドアロン(in-proc)キャッシュを提供します。 セッションを開く オブジェクトであり、現在のセッションのみに制限されます。 ただし、Hibernateの第XNUMXレベルのキャッシュの問題は、異なるセッション間でオブジェクトを共有できないことです。 異なるセッションで同じオブジェクトが必要な場合、それらすべてがデータベースをトリップしてロードします。これにより、最終的にデータベーストラフィックが増加し、スケーラビリティの問題が発生します。 さらに、セッションが閉じられると、すべてのキャッシュデータも失われ、次回はデータベースから再度フェッチする必要があります。
Webファームにデプロイされたときに第XNUMXレベルのみを持つこれらのトラフィックの多いHibernateアプリケーションも、サーバーキャッシュの同期の問題に直面します。 Webファームでは、各ノードがWebサーバー(Apache、Oracle WebLogicなど)を実行し、 httpdの リクエストをサーバー化するプロセス。 そして、それぞれの第XNUMXレベルのキャッシュをHibernateします httpdの ワーカープロセスには、データベースから直接キャッシュされた同じデータの異なるバージョンがあります。
そのため、Hibernateはプロバイダーモデルを備えた第XNUMXレベルのキャッシュを提供します。 Hibernateの第XNUMXレベルのキャッシュ プラグイン3を可能にしますrd セッションとサーバー間でオブジェクトをキャッシュするためのパーティ分散(out-proc)キャッシングプロバイダー。 Hibernateの第XNUMXレベルのキャッシュはに関連付けられています セッションファクトリー オブジェクトであり、単一のセッションではなく、アプリケーション全体で使用できます。
Hibernateの第XNUMXレベルのキャッシュを有効にすると、XNUMXつのキャッシュになります。 XNUMXつは第XNUMXレベルのキャッシュで、もうXNUMXつは第XNUMXレベルのキャッシュです。 Hibernateは、オブジェクトを第XNUMXレベルのキャッシュから取得しようとして失敗した場合、常に第XNUMXレベルのキャッシュからオブジェクトを取得しようとします。 それも失敗した場合、オブジェクトはデータベースから直接ロードされ、同様にキャッシュされます。 この構成では、ほとんどのデータが第XNUMXレベルで提供されるため、データベーストラフィックが大幅に削減されます。 分散キャッシュ.
NCache Javaは、拡張することでHibernateの第XNUMXレベルのキャッシングプロバイダーを実装しました org.hibernate.cache.CacheProvider。 簡単に接続できます NCache コードを変更せずに、HibernateアプリケーションでJavaHibernate分散キャッシングプロバイダー。 NCache データベースをボトルネックにすることなく、Hibernateアプリケーションをマルチサーバー構成に拡張できます。 NCache また、データサイズ管理、サーバーとデータベース間のデータ同期など、すべてのエンタープライズレベルの分散キャッシュ機能を提供します。
プラグインできます NCache hibernate.cfg.xmlを変更するだけで、JavaHibernateキャッシングプロバイダーと ncache次のように.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hibernate-configuration> <session-factory> <property name = "cache.provider_class"> alachisoft.ncache.integrations.hibernate.cache.NCacheProvider, alachisoft.ncache.integrations.hibernate.cache </property> </session-factory> </hibernate-configuration> <ncache> <region name = "default"> <add key = "cacheName" value = "myClusterCache"/> <add key = "enableCacheException" value = "false"/> <class name = "hibernator.BLL.Customer"> <add key = "priority" value = "1"/> <add key = "useAsync" value = "false"/> <add key = "relativeExpiration" value = "180"/> </class> </region> </ncache> |
したがって、を使用して NCache Java Hibernate分散キャッシュプロバイダーを使用すると、コードを変更せずにHibernateアプリケーションを線形にスケーリングできます。
だから、完全に機能する60日間の試用版をダウンロードしてください NCache Enterprise 自分で試してみてください。
私はブログの初心者であり、あなたがウェブサイトであることを絶対に楽しんでいることを伝えたいと思います。 おそらく私はあなたのブログをブックマークすることを計画しています。 あなたは本当に素晴らしい物語を持っています。
非常に多くの情報が含まれているため、これらのタイプの記事は、ユーザーのWebサイトへの関心を維持し、さらに多くの情報を共有し続けます。
チェンナイでのJavaトレーニング
便利なブログ…共有してくれてありがとう