Spring HibernatedAosupportでの怠zy-ロード?
-
23-09-2019 - |
質問
ご挨拶Spring+Hibernateを使用して、非webapplicationを開発しています。私の質問は、HibernatedAosupportが怠zy-Loadingをどのように処理するかです。
Psuedo-Codeに次をご覧ください。
daoは次のようです:
CommonDao extends HibernateDaoSupport{
Family getFamilyById(String id);
SubFamily getSubFamily(String familyid,String subfamilyid);
}
ドメインモデルは次のようです。
Family{
private List<SubFamily> subfamiles;
public List<SubFamily> getSubFamiles();
}
SubFamily{
private Family family;
public Family getFamily();
}
アプリケーションでは、App-ContextからDAOを取得し、操作をフォローしたいと考えています。これは、すべてのメソッド(getfamilybyid()、getSubfamily())の後にAFAIKが閉鎖されるため、怠zyなロードに関係する可能性があります。
CommonDAO dao=//get bean from application context;
Family famA=dao.getFamilyById(familyid);
//
//Do some stuff
List<SubFamily> childrenA=fam.getSubFamiles();
SubFamily asubfamily=dao.getSubFamily(id,subfamilyid);
//
//Do some other stuff
Family famB=asubfamily.getFamily();
解決
私の質問は、DAOへの呼び出しの後、セッションが閉鎖されているため、HibernatedAosupportが怠zyなロードをどのように処理するかです。
DAOSは、各コールのセッションを作成/閉じることはありません。これらはこれに対して責任を負いません。これは通常、」を使用して行われます。視界のオープンセッション「パターン(Springはこれにフィルターまたはインターセプターを提供します)。しかし、これはWebアプリ用です。
スイングアプリでは、1つのソリューションが使用することです 長いセッション. 。メモリをリリースするためにセッションを閉じるための明確なポイントを決定する必要があります。小さなアプリケーションの場合、これは通常簡単で、機能します。 Bigger(つまり、実際のアプリ)の場合、適切な解決策は、フレーム/内部フレーム/ダイアログごとに1つのセッションを使用することです。管理するのは難しいですが、スケーリングします。
あなたが読みたいかもしれないいくつかのスレッド:
他のヒント
もっと多くの時間と調査がされていると、これが「通常の」行動であるようです。エラーは本当に問題ではなく、私が言うことができる最善のように捨てられます。実際の実際の寿命エラーでさえないかもしれません。オフィスのクライアントが彼らがすることをするためにハッキングされたものをやるようなものです。