【问题标题】:how does hibernate sessionfactory manage session?hibernate sessionfactory如何管理会话?
【发布时间】:2013-03-14 20:37:42
【问题描述】:

我刚刚得到了Hibernate Session和Connection之间的关系。 但是现在,我又得到一个问题:hibernate sessionfactory 是如何管理会话的? 在以下代码段中:DAO 类的 save() 方法:

Session session = sessionFactory.openSession();
   Transaction tx=null;
   tx=session.beginTransaction(); 
   session.save(transientInstance);
   session.flush();
   tx.commit();

当我们调用sessionFactory.openSession()时,它会创建一个新的会话附加到当前线程(通过ThreadLocal),这个会话也附加到一个JDBC连接, 但是,如您所见,我们不需要关闭会话 (session.close()),也不需要关闭连接。 那么,Hibernate 会话的生命周期是什么,在什么情况下会关闭呢?自动?

【问题讨论】:

    标签: hibernate session connection sessionfactory


    【解决方案1】:

    我推荐getCurrentSession 方法,因为只有使用这种方法,您才有可能确保会话将从休眠状态关闭

    Configuration J2EE Current Session.

    如果您使用openSession 方法,您必须自行关闭会话。 在我开始使用休眠后,我认为我使用哪种方法并不重要,因为所有会话都会自动关闭......我错了。 我从休眠中发现了 SessionStatistics SessionStatistics 打开的会话已经打开并且从未关闭。

    在我将所有呼叫更改为getCurrentSessionimpl 之后。 Session-per-request 模式打开的会话将在下班后关闭。

    Transactions Basics.

    【讨论】:

    • 感谢 Zelldon,我会用给定的参考资料弄清楚。
    猜你喜欢
    • 2014-06-14
    • 2011-09-19
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多