0

現在、中規模のアプリケーションを開発しています。アプリケーションは、さまざまなプレゼンテーション層を持つ n 層構造になります。一部は Web アプリケーションですが、センサー通信などを扱う別の部分が存在する可能性があります (この段階でどのように開発されるかは不明です)。

私の質問は、NHibernate をビジネス ロジック レイヤーで直接使用して、遅延読み込みを行うときに、ビジネス ロジックが要求されたデータを上位および水平レイヤー/パーツに提供できるかどうかです。

ビジネス層でセッションを初期化しても、遅延読み込みを行うことはできますか? その場合、セッションはどのように処理されますか? オブジェクトが生きている限りセッションが生き続けるように、要求されたデータをセッションと一緒にラップすることは可能ですか?

良い1日を。

4

1 に答える 1

0

あなたの質問を完全に理解しているかどうかはわかりませんが、私が収集したものから、クライアントがWebクライアント以外の場合に遅延読み込みを使用できるかどうかを尋ねています。
答えはイエスです。どのように、どこSessionで初期化されたかは関係ありません。

nHibをビジネスレイヤーで直接使用することは、一部の人(私を含む)によってベストプラクティスと見なされています。

'リクエストされたデータをセッションと一緒にラップして、オブジェクトが生きている限りセッションが生きているようにする'についての質問について-意味はわかり
ませんが、モデルクラスをセッションと一緒に送信することを意味する場合はあなたのクライアントが彼らのプロパティを怠惰にロードできること-私はそこに行かないことを強くお勧めします。
経験則では、クライアントに必要なものだけを提供し、それ以上は提供しません。
(Ayendeはこれについて詳しく説明しています。)
そのため、常にDTOを使用してクライアントと通信する必要があると思います。

これを設定する方法は次のとおりです。
クライアントはサーバーにデータを要求します=>サーバーはオブジェクトをロードし(ただし、遅延ロードされたプロパティは初期化しません)、DTOにデータを入力し、クライアントに返します。

クライアントは遅延読み込みプロパティを要求します=>サーバーはオブジェクトを読み込み(nHibの第2レベルのキャッシュ、またはその他のキャッシュメカニズムを使用)、要求されたプロパティを読み込み、DTOをクライアントに返します。

于 2012-05-06T09:17:54.150 に答える