2012-03-06 8 views
0

私はStruts2 Spring3 JPA2で書かれたアプリケーションを持っており、休止状態です。 Struts2のアクション
- - 春のサービス
- だから、1は1の呼び出しや、多くのDAOオブジェクトを含めることができますサービスのアクション呼び出しを支柱struts2 spring jpa layersベストプラクティス

春のDAO
:このアプリでは、私は次のレベルを持っています。
画面上に情報を表示するために、私はエンティティのためにいくつかの "ミラー"オブジェクトを作成しました。 ie:EmailMessageエンティティには、Webフォームからデータを表示/収集するために使用されるEmailMessageForm Beanがあります(これがベストプラクティスであるかどうかはわかりません)。したがって、私の問題です。 (私はTRANSACTIONエンティティマネージャを持っている)私はStrutsアクションからこれを呼び出すと、セッションの有効期限が切れたので、私は依存関係を取得することはできません、

public List <EmailMessage> getEmailMessages(){ 
    //code here 
} 

と:EmailMessageServiceImplで
私はと呼ばれる方法があります。だから、一つの解決策は、別の方法

List<EmailMessageForm> getEmailMessagesForDisplay() 
{ 
//.... 
} 

、ここ(getEmailMessagesを呼ぶ)とオブジェクトを形成するために、これを変換するために作成することです。
私に何をお勧めしますか?
この種の問題のベストプラクティスは何ですか?

答えて

1

"依存関係"とは、 "遅延ロードされたオブジェクト"を意味する場合、IMOはビューレイヤーを起動する前に必要なすべてのデータを取得することをお勧めします。現在のアーキテクチャでは、DTOを取得するサービスメソッド(「フォームBean」; Struts 1と混同しやすいのでこの用語を使用することを躊躇しています)を意味します。

ビューフィルタ/インターセプタでオープンセッションを使用する方が良いとも言われています。複数のN + 1クエリなど、ビューの開発者が注意を払っていないと意図しない結果につながる可能性があります。

+0

もちろん、依存関係は遅延読み込みオブジェクトの一部です。それは私が達成しようとしていることです(ビューレイヤーを打つ前に必要なすべてのデータを取得します)。だから、データをフェッチして(daoオブジェクトを使用して)サービス層にメソッドを配置し、strutsアクションのためにdtoを作成して返します。 –

+0

私はこの厄介な仕事をするためにドーザーを見つけた/使用しています:) –