問題タブ [first-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 - NHibernateの第1レベルのキャッシュでエンティティを管理する
スレッド/セッションの存続期間中に第1レベルのキャッシュで永続化されたエンティティを管理する適切な方法は何ですか?実際には、保存する前に他の(一時的な)エンティティからそれらを参照するために、スレッド(セッション)ごとに常に存在する必要がある永続化されたインスタンスは1つまたは2つだけです。
セッションキャッシュを時々クリアする必要があるので(そうしないと、セッションキャッシュがいっぱいになり、痛々しいほど遅くなるため)、私にはわかりません。
- 必要なエンティティを除いて、セッションからすべてのエンティティを削除しますか?
- セッション全体をクリアし、必要なエンティティをリロードしますか?
- 新しいセッションを作成し、必要なエンティティをリロードしますか?
nhibernate - NHibernate が同じオブジェクトを複数回ロードしています - 助けてください!
ASP.NET ページの 1 つのトレースを読んでいて、ユーザーが必要になるたびにページ ユーザーがデータベースから読み込まれていることに気付きました。それぞれISession
がオブジェクトをキャッシュすることになっているので、私はこれについて本当に当惑しています。
論理的には、問題は次の 2 つのいずれかである必要があります。
- の
ISession
キャッシュが正しく機能していません - ユーザーがリクエストされるたびに、別の
ISession
問題は2番だと思います)。私は Castle Windsor を使用してオブジェクトのライフサイクルを管理しているので、誰かが問題を見つけるのを手伝ってくれる場合に備えて、使用しているコードの一部を投稿しました。Castle Windsor が管理しているクラスは次のとおりです。
MooseUserRepository
- MooseUser インスタンス (つまり、この場合はページ ユーザー) を管理するためのリポジトリ クラスKctcUnitOfWork
- ISession のラッパー
MooseUserRepository
KctcUnitOfWork
次のようなコンストラクタ依存関係があります。
構成ファイルは次のようになります。
PerWebRequest
ライフスタイルに注意してください。
Castle Windsor コンテナは、呼び出される一種のユーティリティ クラスの単なる静的プロパティであるMoose.Application
ため、常に存在します。
ページ自体には、次のような IMooseUserRepository インスタンスがあります。
ページのユーザーは、次のようなプロパティによってアクセスされます。
これらの後続の呼び出しPageUser
により、重複した SQL コマンドが発生しているようです。
明らかに、ロードされたオブジェクトをプライベート変数に保存することでこの問題を回避できMooseUser
ますが、私の理解では、ISession
これは私のために行うはずです。
何がうまくいかないのか、誰でも推測できますか?
nhibernate - Castle ActiveRecord ベースのアプリケーションで一次キャッシュは有効になっていますか?
Castle ActiveRecord に基づく単純なレベルの ASP.NET Web アプリケーションがあります。その中で一次キャッシュが有効になっているかどうかを確認するにはどうすればよいですか?
nhibernate - ICriteria やその他の API で一次キャッシュを使用できますか?
またはメソッドを使用すると、一次NHibernate
キャッシュの恩恵を簡単に受けることができます。しかし、 、、およびはどうでしょうか。彼らも一次キャッシュを使用していますか?Load
Get
ICriteria
HQL
Linq-to-NHibernate
QueryOver
hibernate - hibernate.jdbc.batch_sizeを指定する意味は何ですか?
このHibernate構成は、表面上、第1レベルのキャッシュにキャッシュされるオブジェクトの数を制御する必要があります。その理由は簡単に理解できます。メモリが不足したくないのです。
しかし、何かが私を混乱させています。このWebサイトを含め、私が見たすべての実装に は、明示的なフラッシュとクリアがあります。問題ありませんが、構成プロパティのポイントは何ですか?
注:ここでは、Hibernateがキャッシュのサイズを監視し、特定のタイプのオブジェクトの数がキャッシュサイズよりも大きくなった場合に、キャッシュをデータベースと同期すると想定しています。その仮定が間違っているかどうかわからない???
nhibernate - NHibernate の第 1 レベルのキャッシュから削除済みアイテムを削除しますか? または: キャッシュされたアイテムが削除されたかどうかを確認する方法は?
.net モジュールの永続性のために NHibernate を使用するブラウンフィールド マルチユーザー アプリケーション (99% Delphi、1% .net) があります。私のアプリケーションでは、いくつかのエンティティにカテゴリを追加できます。1 つを選択して、それを使用しないことにした場合 (したがって、カテゴリを再度削除する場合)、NHibernate によってロードされ、セッションの第 1 レベルのキャッシュに残ります。ここで、他のユーザーがこのカテゴリを削除し、エンティティを保存しようとすると、読み込まれたオブジェクトがもう存在しないため、アプリケーションが例外をスローします。
私の質問: もう存在しないアイテムがキャッシュにロードされているかどうかを確認する方法はありますか? もしそうなら、キャッシュから存在しないエンティティを削除する方法はありますか?
エンティティをロードします (セッション キャッシュに追加されます) カテゴリを追加します (セッション キャッシュに追加されます) 他の誰かがデータベースからカテゴリを削除します。エンティティを保存すると、カテゴリがもう存在しないため、例外が発生します。
それはまだセッションキャッシュにあります。セッションのキャッシュから (自動的に) 削除できればいいのですが? キャッシュをクリーンアップして、もう存在しないオブジェクトを削除する方法はありますか?
よろしく、テッド
c# - EF Code First ローカル拡張機能を使用する
次の方法は、サービス層で適切に機能します。
しかし、次のメソッドを実行しようとすると、メソッドは GetAll() メソッドによってロードされた古いデータを返します。
問題は何ですか?どうすれば修正できますか?
このサンプルでローカル メソッドを使用して、新しいデータをローカル (キャッシュ) にリロードするにはどうすればよいですか?
hibernate - Hibernate First level Cache と Query Cache の比較
一次キャッシュは休止状態のクエリキャッシュとは異なりますか? 第 1 レベルおよびクエリ キャッシュについて言及している記事を見たことがありますが、混乱しています。