問題タブ [istatelesssession]
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 IStatelessSession と多対多の関係
2 つのエンティティ間に多対多の関係があります。バッチ プロセスの一環として、これらのエンティティを多数作成し、それらを関連付けています。これは を使用していIStatelessSession
ます。
NHibernate 3.0 を使用しています。
エンティティ:
基本的に、バッチ コードは次のようになります。
2 つのエンティティは正しく永続化されますが、それらの間の関係テーブルは 2 つのエンティティ間の関係で更新されません。
これは、ステートレス セッションがオブジェクトを追跡しないという事実に関係していることを理解しています。しかし、多対多の永続性を実現するにはどうすればよいでしょうか?
.net - NHibernate: IStatelessSession を使用して読み取り値のコレクションを手動で処理する
データベースへのエンティティの一括読み込み中に、受信エンティティが値を計算するためにデータベース内の既存のエンティティに依存するシナリオがあります。この依存関係自体には、この値の計算に使用される値の型のコレクションがあります。を使用してIStatelessSession
いるため、エンティティがセッション経由で読み込まれると、このコレクションは無視されます。このコレクションの負荷を手動で処理したいのですが、その方法に関するガイダンスを見つけるのに苦労しています。
コレクションに手動で値をクエリする最も簡単な方法を提案できる人はいますか?
c# - NHibernateIStatelessSessionのLoadメソッドに相当
NHibernateを使用して、データベースに行を一括挿入しています。挿入するデータ量が多いため、のIStatelessSession
代わりに使用していISession
ます。挿入するオブジェクトは、割り当てられたIDを使用します(つまり、hiloまたはGUIDは生成されません。一意のIDがオブジェクトに割り当てられます)。
私の問題は、Foo
別のオブジェクト(say)への多対1の参照を持つオブジェクト(say )があることBar
です。Bar
最初にすべてのオブジェクトを挿入しますが、問題ありません。
オブジェクトを挿入したいときに問題が発生しFoo
ます。各オブジェクトの一意の識別子は知っていますが、オブジェクトを挿入する前にオブジェクトにプロパティを設定するために、データベースからBar
各オブジェクトを取得する必要はありません。Bar
Foo
ここで、簡単な例を示す良い機会かもしれません。
(たとえば)4567のIDを持つオブジェクトを参照する(たとえば)1234の新しいFoo
オブジェクトを作成したいとします。以前にすべてのオブジェクトを追加したので、この識別子を持つオブジェクトがすでに存在することがわかります。 。Id
Bar
Bar
Bar
データベースからオブジェクトを再度Foo
取得せずにオブジェクトを追加するにはどうすればよいですか?Bar
nhibernate - NHibernateセッション(およびステートレスセッション)と長時間実行されるアプリケーション
ジョブを実行することを目的としたWindowsWebサービスのコンテキストでは、Webアプリケーション用に開発したNHibernateDALを再利用しようとします。
セッション管理には2つのオプションがあり、それぞれに長所と短所があります。
ステートフルセッション
- すべてを追跡するため、大幅に成長します(L1 /セッションキャッシュ)
- 注意深く閉じる必要があります。セッションの破棄は、L1キャッシュをクリアするのに十分ではないようです(メモリプロファイラーを使用して気づいたこと)
ステートレスセッション
- 現在、マッピングの再利用に失敗しています。「lazy=true」で宣言されたすべてのバッグは、次の例外で終了します(セッションが閉じられていない場合でも)。
[...]を初期化しても、役割のコレクションを遅延初期化できませんでした:[...]、セッションまたはセッションが閉じられていません
明らかに、マッピング(Webアプリと共有されている)をlazy = "false"で更新することはできません。これは、パフォーマンスにとって大きな欠点になります。
- L2キャッシュと対話できない:共有L2キャッシュがデプロイされると、サービスはL2キャッシュデータを無効にして、Webアプリケーションが最新のデータを取得できるようにすることができなくなります。
NHibernateはこれまで優れていることが証明されており、依存性注入用の構造マップを使用して、ステートフルセッションとNHibernateLINQをWebコンテキストで正常に使用できました。
私の質問は次のとおりです。
- 長時間実行されるスレッドでNHibernateを使用するための良い解決策はありますか?
- ステートフルセッションを使用したいのですが、メモリリークを回避するにはどうすればよいですか?
java - ステートレスセッションBeanインスタンスをロックできますか?
彼ら、
何らかの理由で、ステートレスセッションBeanプールの最大サイズに到達しようとしています。
ステートレスセッションBeanを「同時に」検索することで、大量のスレッドを使用してこれを行うことができますが、プールから作成されたBeanインスタンスを選択することがあるため、これを行うには多くのループまたは多くのスレッドを消費する必要があります。その結果、最大サイズに到達できません。
だから、私の質問はここにあります:インスタンスをロックし(大規模な数学計算タスクを実行するのとは異なり)、「動作中」のステータスを維持し、フリープールに戻さない方法を見つけることができますか?次に、Thread[を使用できますmax-pool-size]いくつかの厄介なループを実行せずに、目標に到達します。
ありがとう、