2013-08-06 122 views
0

我试图懒惰初始化我的一对多关系使用Spring的休眠模板。休眠懒惰加载和初始化

我已阅读以下指南。 http://dinukaroshan.blogspot.sg/2012/08/lazyeager-loading-using-hibernate-by.html

与参照这些代码

/** 
    * {@inheritDoc} 
    */ 
public Child getChildByIdWithoutToys(Long childId) { 
    return getHibernateTemplate().get(Child.class, childId); 
} 

/** 
    * {@inheritDoc} 
    */ 
public Child getChildByIdWithToys(Long childId) { 
    Child child = getChildByIdWithoutToys(childId); 
    /** 

上面代码使用2会话和2 SQL语句(暴露SQL)

是否有在一个会话和一个SQL执行此一方式语句(hibernate_showsql = true)

回答

1

毕竟,这是一个怪癖和肮脏的解决方案适用于您发布的问题,而不是最好的实践。
您可以使用1个会话和2个sql执行此代码(由于您正在执行两条单独的指令,因此更少是不可能的)。
简而言之,您必须从spring-context获取sessionFactory,打开会话,执行代码并关闭会话;交易直接由春天管理! 在你的主要做:

0

为了让所有内容保持在一个会话中,您需要从一个内部调用这些方法。最简单的方法是使用Spring的声明式事务支持,最好是使用@Transactional标记顶级方法(您可能会输入整个持久性系统)。这些查找方法将从他们的调用者“继承”事务,而不是创建新事务。