問題タブ [second-level-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - Nibernate および SetCacheable と二次キャッシュ
Rhino.Security リポジトリを使用してユーザー/ロールを管理しています。
作成、削除、および関連付けのプロセスは正常に機能しますが、GetAssociatedUsersGroupFor という 1 つのメソッドを使用してクエリを実行すると問題に直面します。
メソッドを初めて呼び出すと、ユーザーのグループを取得できません。これは、まだ関連付けを作成していないためです。この時点で、ユーザーをいくつかのグループに関連付けます。
DB をチェックインすると、関連付けが表示されます。
GetAssociatedUsersGroupFor をもう一度呼び出しますが、グループを取得できません。
プロファイラーを使用すると、今回はデータベースが関与していないことがわかりました。コードを確認したところ、関数が Nhibernate SetCacheable を使用していることがわかりました。
Rhino.Security コードを変更したくないので、この動作を何らかの方法でオーバーライドまたは変更できるかどうかを知りたいです。
アップデート:
この命令を使用して、関連付けられたグループを取得します。
私はこのコードに関連付けます:
そして切り離します:
アップデート
構成に第 2 レベルのキャッシュを残していたことがわかりました。
パフォーマンスを向上させるために、II レベルのキャッシュを持つことは良いことだと思っていましたが、完全に間違っていたようです。
ここで何が起こっているのかを理解するのを手伝ってくれる人はいますか?
hibernate - 特定のエンティティの Hibernate 2 次キャッシュのサイズを制限することはできますか?
Hibernate のセカンド レベル キャッシュが有効になっているシナリオがあり、毎日 1000 個のインスタンスが作成され、8 年間保持されるエンティティをキャッシュしたいのですが、クエリは直近の 2 日間しか処理しません。ヒストリカルルックアップのまれなケースでは、コードが日付に依存するため、ヒストリテーブルを作成する必要は避けたいと思います。
Infinispan をレベル 2 プロバイダーとして使用する Hibernate で、Hibernate がエンティティ Foo に使用する特定の属性 (エビクション ポリシー、サイズなど) を持つ特定のキャッシュを非常に具体的に構成することは可能ですか?
asp.net-mvc - Rhino.Security:DetachedCriteriaで第2レベルのキャッシュがヒットすることはありません
ユーザー/役割/権限を管理するためにRhino.Securityを含むソリューションを実装しました。
ユーザーがコントローラーアクションへのアクセスを許可されているかどうかを確認したいので、カスタムアクションフィルターを実装しました。
CheckAuthorizationOnOperationは、Rhino.Securityを呼び出して、ユーザーが指定された操作を許可されているかどうかを確認します。
すべてが正常に機能しますが、 IsAllowedによって呼び出されたクエリが実行されたときに、第2レベルのキャッシュがヒットしないことに気付きました。
調査したところ、フレームワーク(Rhino.Security)がDetachedCriteriaを使用していることがわかりました。これらは、次の2つの手順と呼ばれます。
ご覧のとおり、 FindResultsはSetCacheableを使用しています。
ページを更新するたびに、アクションフィルターがプロシージャを実行し、キャッシュを無視してクエリが再度実行されます(第2レベル)。私はキャッシュを広範囲に使用し、他のすべての呼び出しは適切に機能するため、これが期待どおりに機能しない理由を理解したいと思います。
調査を行ったところ、関数を2回呼び出した場合にのみ、第2レベルのキャッシュが使用されることに気付きました。
この特定の状況のキャッシュは、同じセッション(nHibernate)を使用している場合にのみ機能するようです。何が起こっているのかを理解するのを手伝ってくれる人はいますか?
アップデート:
hibernate - ロールバックと第2レベルのコレクションキャッシュ
Ehcacheが提供する第2レベルのキャッシュを備えたHibernateがあります。
私は、キャッシュされたコレクションを持つParent
クラスをChild
持っています。Parent.children
次のコードを実行すると:
最後の行は例外で失敗し、Child
存在しないものをロードしようとします。Child
調査の結果、前のトランザクションで作成およびロールバックされたものをロードしようとしていることが理由であることがわかりました。
コレクションキャッシュが適切にクリアされるように、キャッシュを構成する、またはトランザクションをロールバックする正しい方法は何ですか?ロールバック時にすべてのコレクションキャッシュを削除したくありません。ありがとうございます。HibernateまたはEhcacheに最小限の影響でそれを実行させる方法を探しています。
java - 2番目のレベル(L2)キャッシュのhibernateのデフォルトはどの実装ですか?
L2キャッシュが何であるかは理解していますが、デフォルトのL2キャッシュの実装が何であるかを説明しているドキュメントは見つかりません。
Hibernateのドキュメントによると、デフォルトのimplはバージョン3.2より前のEhcacheでしたが、現在のデフォルトについては詳しく説明されていません。
Hibernateフォーラムで同じ質問をしている別の人を見つけましたが、誰も答えませんでした:https ://forum.hibernate.org/viewtopic.php?p=2438906
正解をよろしくお願いします!
hibernate - Hibernateの第2レベルのキャッシュを設定する
私はHibernateとSpringに不慣れで、Hibernateの第2レベルのキャッシュを試しています。しかし、それはうまくいかないようです。次のテストクラスがあります。
そして、私が持っています
しかし、私は次のような出力を取得します:
それを機能させるために私は何をしなければなりませんか?
c# - nhibernate のセカンド レベル キャッシングのソリューションを選択する際の要因は何ですか
この記事では、syscache オプションの設定は簡単ですが、二次キャッシュの他のオプション (memcache、velocity、syscache2、prevalence など) の賛否両論のリストがあるかどうかを確認したかったのです。確かに私は正しい選択をしています。
hibernate - Hibernate + Spring によるキャッシング - いくつかの質問
Spring 3 と Hibernate 3.6 を使用した Web アプリケーションの開発に取り組んでいます。現時点では、Spring と Hibernate によるキャッシュがどのように機能するかを理解しようとしています。Caching with Hibernate に関する情報源と Spring に関する情報源を見つけたので、情報をまとめてみました。私はまだ両方のフレームワークにいくつかの質問をしています。誰かがそれらに答えたり、ここにリストされている事実が正しいかどうか教えてくれたらうれしいです.
ほとんどの場合、短い回答 (はい/いいえ) で十分です。このリストは、Spring と Hibernate によるキャッシュがどのように機能するかを理解したい他の人にも役立つと思います。
General
1) Hibernate は次のキャッシュをサポートします: 1st Level Cache、2nd Level Cache、Query Cache
2) Spring 自体は、次のキャッシングの可能性をサポートしています: メソッドキャッシングのみ
1st Level Cache
3) 1st Level Cache は、すべての Hibernate アプリケーションの一部です。
4)休止状態セッションごとに 1 番目のレベルのキャッシュが作成されます。
5)第 1 レベルのキャッシュには何が保存されますか? オブジェクトまたはそれらのプロパティの値だけですか? クエリとその結果?
2nd Level Cache
6)わかったこと: 2nd Level Cache は、アプリケーションごとに 1 回使用されます。それは間違っていませんか?あたり1回使用されていませんSessionFactory
か?および: 複数の sessionfactorys = 複数の第 2 レベルのキャッシュが可能ですか?
7)第 2 レベルのキャッシュに保存されるもの: 私の意見では、オブジェクト自体ではなく、1 つのレコードに属する値のみです。
8) 1 つのレコードの値を第 2 レベル キャッシュに格納する場合、関連する値 (外部キーを介して接続されたオブジェクトから) も格納できますか?
9)第 2 レベルのキャッシュ内の 1 つのオブジェクトの値を更新すると、それに接続されているオブジェクトの値もキャッシュ内で更新できますか?
10)オブジェクトの値が変化している場合、どうすれば第 2 レベルのキャッシュを更新できますか? 流す?キャッシュの一部だけを更新できますか、それともキャッシュ全体を更新する必要がありますか?
11)第 2 レベルのキャッシュが意味をなすのはどこで、そうでないのはどこですか?
12)キャッシュ モード: 各キャッシュ モードは異なるキャッシュ戦略を提供しますか? たとえば、キャッシュモードが「読み取り専用」の場合、データベースとキャッシュの同期は必要ありませんか? 他のキャッシュ モードは同期を提供しますか? 同期は開発者自身が行う必要があると思いましたか?
Query Cache
13) Query Cache と 2nd Level Cache の違いは何ですか? 私の意見では、クエリキャッシュの結果セットは保存されますが、値ではなくIDのみで保存されます。クエリが再度使用され、結果セットがまだ「正しい」場合、ID に属する値が 2 次キャッシュからクエリされます。
14)クエリ キャッシュには、第 2 レベルのキャッシュを使用する必要がありますか?
15) Query Cache はどこで意味があり、どこで意味がないのですか?
Spring
16) Spring はメソッドキャッシングよりも多くのキャッシングの可能性を提供しますか?
17)メソッドキャッシングはハイバネートキャッシングにリンクされていません
18)ただし: メソッドのキャッシングには、Ehcache のような第 2 レベルが必要です (hibernate でも使用できます)。
19)データベースクエリなしでメソッドキャッシングを使用できますか?
Getting mixed up
20) hibernate に ehcache を第 2 レベル キャッシュとして使用し、Spring に Ehcache をメソッド キャッシングに使用する場合、同じ Ehcache-instance を使用できますか? 何かが混じる可能性はありますか?
21) 1 次キャッシュと 2 次キャッシュを使用する場合、それらを混同することはできますか? データベースにクエリを実行するとき、結果はどこから来るのでしょうか? 1 番目または 2 番目のレベルのキャッシュですか? 第 1 レベルのキャッシュは第 2 レベルのキャッシュで動作しますか?
22)私が言及したキャッシュを使用することで混乱する可能性のあるものは他にありますか? :-)
どんな質問にも答えてくれてありがとう!:-)
hibernate - Hibernate の遅延読み込みと Hazelcast
しばらくの間、Hibernate の第 2 レベルのキャッシュとして Hazelcast を使用していますが、複数のノードを使用すると、データの保存と読み取りに長い遅延が生じることを認識しています。
構成されたオブジェクトと @OneToMany 関係を集中的に使用し、パフォーマンスを向上させるために、これらの構成されたオブジェクトまたはコレクションを Hibernate 遅延読み込みを介してロードすることにしました。また、Hazelcast のドキュメントに記載されているように、Hazelcast のシリアル化を高速化するために DataSerializable を実装しました。しかし、writeData/readData メソッドの使用をログに記録すると、実際には使用されていないことがわかりました。
Hibernate Proxy (遅延読み込みを介して使用される) が DataSerializable メソッドの使用を妨げているかどうか (プロキシ自体が (?) インターフェースを実装していない可能性があるため)、さらに重要なことに、Hazelcast が遅延読み込みをサポートしているかどうかは不明です。まったく-そしてどうやって!
nhibernate - NHibernate 2nd Level Cache - Membase MemCache - 複数のセッション ファクトリ
マルチテナント NHibernate アプリケーションで複数のデータベースを使用しています。以前は正常に動作していた SysCache を使用していましたが、現在 Web ファームを使用しているため、Memcache に移行する必要がありました。私は実際に、Windowsに非常に簡単にインストールでき、MemcacheをサポートするMembaseサーバーを使用しています。
キャッシュがセッション ファクトリ間で共有されているように見えます...エンティティがデータベース A から ID 1 でキャッシュされ、アプリケーション B が同じエンティティを要求した場合、それは独自のデータベースから取得する必要がありますが、代わりにデータベースからエンティティを返します。キャッシュ内の A.
これを機能させるために実行する必要がある追加の構成はありますか?
私はここから MembaseCacheProvider を使用しています (同じように構成されています) http://blog.ovesens.net/2011/02/nhibernate-membase-caching-provider/
上記のブログにコメントを残しましたが、当面誰かが助けてくれる場合に備えて、ここにも投稿します。
ポール