Q1: このベンダーだけがクラスターで Hibernate L2 キャッシュをサポートしているというのは正しいですか?
- Hibernate の Terracotta (商用)
- SwarmCache (2003 年以降はリリースされていません)
- JBoss キャッシュ 1.x
- JBoss キャッシュ 2
Q2: Hibernate L2 キャッシュに代わるものはありますか? (おそらくDBキャッシング?)
Q1: このベンダーだけがクラスターで Hibernate L2 キャッシュをサポートしているというのは正しいですか?
Q2: Hibernate L2 キャッシュに代わるものはありますか? (おそらくDBキャッシング?)
Q1. EhCache は、分散型の Hibernate L2 キャッシュとして非常にうまく機能します。これをプロジェクトに使用しています。
Q2. 複数のキャッシュが可能です。
ただし、データベース キャッシュの問題は、それが物理的にデータベース サーバー上にあるため、各クエリにネットワーク呼び出し (レイテンシ、帯域幅など) が含まれることです。これが、アプリケーション サーバー上のキャッシュの要点です。
分散コンテキストでは、これは多くの場合、エンティティの 1 つが変更されたときにカテゴリを無効にすることになります。キャッシュはリージョン全体または特定のオブジェクトを無効にしますが、その間にループする必要があり、パフォーマンスが低下します)
そして他の人は確かに...
したがって、このケースはデータベースと密接に関連していません。通常、Hibernate エンティティは保存されません。私たちはそれを (データ アクセスや Daos ではなく) ビジネス層に配置し、ビジネス コードで直接利用できるようにします。私たちにとって、これは透過的なキャッシュではなく、操作を行ったり値を配信したりする明示的なビジネス サービス (このキャッシュを担当し、データが存在しない場合はキャッシュをロードし、必要に応じて無効化する) の呼び出しであることに注意してください。
このキャッシュの楽しいスレッドの問題: このキャッシュは数百の Web スレッドによってアクセスされるため、スレッドセーフである必要があります。スレッド セーフな値が呼び出しごとに不変または複製される理由はおそらくご存じでしょう (これは多くの場合、パフォーマンスの問題です)。そのため、すべてのビジネス キャッシュは不変オブジェクトを使用しており、パフォーマンスは優れています。
[Infinispan(JBoss Cacheの進化)を第2レベルのキャッシュプロバイダーとして使用することもできます!] [1]
[1]: http: //infinispan.blogspot.com/2009/10/infinispan-based-hibernate-cache.htmlを参照してください
EhCache には分散モードがありますが、それが Hibernate でサポートされているかどうかはわかりません。しかし、なぜそれが機能しないのかわかりません。
特定の理由で JBossCache 3 を省略しましたか?