首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图中的hibernate打开会话

视图中的hibernate打开会话
EN

Stack Overflow用户
提问于 2009-04-23 15:29:24
回答 2查看 1.1K关注 0票数 1

我正在使用下面的方法来解决hibernate.Pleas中唯一的惰性初始化问题,告诉我它是否可以工作。由于某些原因,我不得不在我的持久层中实现我的事务处理。

代码语言:javascript
复制
public class CourseDAO {

       Session session = null;
    public CourseDAO()
{

  this.session =    this.session = HibernateUtil.getSessionFactory().getCurrentSession(); 

}

    public Course findByID(int cid){


        Course crc = null;
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Query q = session.createQuery("from Course  as course where course.cid = "+cid+" ");
            crc = (Course) q.uniqueResult();
          //note that i am not commiting my transcation here.Because If i do that i will not be able to
          //do lazy fetch


        } 
        catch (HibernateException e)
        {
            e.printStackTrace();
             tx.rollback();
            throw new DataAccessLayerException(e);
        }

        finally
        {


        }
        return crc;
}


}

在过滤器中,我使用了下面的代码

代码语言:javascript
复制
 session =  HibernateUtil.getSessionFactory().getCurrentSession();
     if(session.isOpen())
          HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();

这种方法正确吗??它会有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-28 15:32:08

你能解释一下为什么你需要在你的存储库中有你的事务吗?问题是它们将是非常细粒度的,所以您不会从会话缓存中获得任何优势

然后在那里打开事务,但在筛选器中关闭它。如果访问服务中的多个存储库,会发生什么情况?也许我没有理解您的意思,但我认为您需要重新思考迫使您在存储库中管理事务的原因

票数 0
EN

Stack Overflow用户

发布于 2009-11-10 22:06:45

你什么时候创建你的CourseDAO?如果它是单例bean或其他比页面视图存在时间更长的东西,它将需要保留一个SessionFactory并在需要时生成一个新会话,而不是保留一个会话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/782272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档