Web アプリケーションで Spring + Hibernate を使用したいと考えています。私のアプリケーションはSpringなしで書かれています。「ページを開く」アクションが呼び出されたら、Hibernate セッションを開き、それを Http セッションに保存して、DAO 間で共有します。保存アクションが呼び出されると、古いセッションを使用してトランザクションを開始します。
しかし今、古い DAO を HibernateDaoSupport ベースの DAO に移行したいと考えています。この場合、どうすればセッションを共有できますか? DAO が beans.xml 内の 1 つの SessionFactory を参照する場合、それらは同じセッションを共有しますか? この場合、セッションを管理するにはどうすればよいですか (新規で開くか、古いものを使用します)?
私は次のコードを書いていますが、私は得る
org.hibernate.LazyInitializationException: プロキシを初期化できませんでした - セッションがありません
ページ上 System.out.println(obj.getCategory().getName());
public class CategoryObjectDAOSpringImpl extends HibernateDaoSupport implements CategoryObjectDAO {
@Override
public CategoryObject get(int id) throws Exception {
CategoryObject obj = getHibernateTemplate().get(CategoryObject.class, id);
System.out.println(obj.getId());
System.out.println(obj.getCategory().getName());
for (ObjAttrCommon objAttr : obj.getAttributes()) {
//objAttr.setSession(getSession());
System.out.println(objAttr.getId());
}
return obj;
}
追加すると不思議です
getSessionFactory().openSession();
私は同じ例外を持っています。