Hazelcast 3.6.1と一緒にHibernate 3.5.6を第2レベルのキャッシュとして使用しています。私たちには次の問題があります。私たちは、非遅延コレクションを持つHibernateエンティティを持っています。同じノード上の2つの連続するセッションでコレクションに要素を追加すると、コレクション全体が常にデータベースから再読み込みされます。私は、第2レベルのキャッシュは、要素がコレクションから完全に削除されず、別のエントリを追加するたびに再ロードされるのではなく、コレクションに追加されたときに更新されると予想していました。これはHibernateの第2レベルのキャッシュの主な問題ですか、これは私たち側の設定上の問題ですか?無効化の代わりに第2レベルのキャッシュを更新する
答えて
自分で質問に答えることができると思います。実際には、Hibernateはではなく、コレクションを更新しますが、常に無効にします。私はここで次の説明を見つけました:http://planet.jboss.org/post/collection_caching_in_the_hibernate_second_level_cache:
キャッシングセマンティクスとは何ですか?まあ、重要なのは、コレクションがキャッシュ内で決して更新されないということです。それらはキャッシュから無効にされ、その後、別のデータベース読取りの結果として、後に潜在的にキャッシュされる可能性がある。したがって、アプリケーションがGroup.addMember()と呼ばれる場合、Hibernateはそのグループのメンバーシップコレクションをキャッシュから削除します。 JBoss Cacheが第2レベルのキャッシュ実装である場合、その削除はクラスタの周りに伝播されます。コレクションはクラスタ内のすべてのノードのキャッシュから削除されます。
後でアプリケーションがそのグループのメンバーにアクセスする必要がある場合、別のデータベースの読み取りが行われ、メンバーの現在の主キーのセットがキャッシュに入れられます。
デフォルトでは、hibernateキャッシュはPKでキーされるため、findAll()を実行すると、findOne(id)を実行するときにhibernateキャッシュは使用されません。
findAll()をキャッシュする場合は、ehcacheと@Cacheアノテーションを使用します。キャッシュに使用するキーに注意してください。 http://www.ehcache.org/documentation/2.8/get-started/key-classes-methods.html
を変更していない私たちが持っている問題は、私たちがに要素を追加したいということです同僚。 Hibernateはそれに要素を追加するために常にコレクション全体をロードします。問題は、コレクションが2番目のレベルのキャッシュから読み込めない場合(これは私の場合はわかりません)、コレクション全体をロードするためにデータベースに常に照会することになります。 –
@JanSchaeferあなたは自分自身でこのキャッシュの役割を果たす必要があります。私は間違っていることが証明されてうれしいですが、私は何度も同じ問題を抱えてきました。 –
- 1. Doctrine:第2レベルのキャッシュ
- 2. JHipsterテスト:第2レベルのキャッシュが無効になっている場合のNoCacheRegionFactoryAvailableException
- 3. をクリアHibernateの第2レベルのキャッシュ
- 4. マルチページフォーム用のHibernate第2レベルのキャッシュ
- 5. Hibernate 5.2.2で第2レベルのキャッシュを有効にする方法は?
- 6. ネイティブのEclipseLink:一部のエンティティで第2レベルのキャッシュを有効にします
- 7. NHibernateの第3レベルのキャッシュ
- 8. テーブル内の更新時に無効化キャッシュ
- 9. ドクトリン2結果キャッシュの無効化
- 10. 第三のレベルが第2レベルの下
- 11. hibernate第2レベルのキャッシュ自体が空になる
- 12. Conwayの生命のゲーム:第2世代から第3世代への更新
- 13. 第2レベルのナビゲーションからUISplitViewのDetailViewを更新
- 14. シリアル化キャッシュを無効にする
- 15. CheckedListBoxの第2レベル
- 16. NHibernateの第二レベルのキャッシュは
- 17. 代わりに更新する
- 18. NHibernateの第2レベルのキャッシュ領域 - evoval領域
- 19. ビット列の更新の代わりに
- 20. Hibernate第2レベルのキャッシュが1対1で動作しない
- 21. 「エンティティフレームワーク6.1の第2レベルのキャッシュ」プラグインでエンティティが変更されたときにキャッシュがパージされない
- 22. 角2更新[無効]
- 23. レベルの代わりに、データセットR
- 24. Hibernate:第3レベルのキャッシュがありますか?
- 25. jQuery.ajax - キャッシュ強制無効化
- 26. node.jsキャッシュ無効化テクニック
- 27. マルチインデックスの第2レベルのタイムスライス
- 28. PHP:サーバーの代わりに、キャッシュ
- 29. ポートレートモードのSplitApp第2のビューの代わりに第1のビューを表示する
- 30. objective-cの第2画面のフォーカスを無効にする
これは、キャッシュの容量に関連する可能性があります。あなたはそれを確認しましたか? –
私はそれに応じて設定を変更しましたが、それは動作 –