怎样的SessionFactory管理会话?(how does hibernate sessionf

2019-08-17 23:27发布

我刚刚得到了Hibernate的Session和连接之间的关系。 但现在,我得到了另一个问题:怎样的SessionFactory管理会话? 在下面的代码段:保存一个DAO类的()方法:

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

当我们调用sessionFactory.openSession()它会创建一个附加到当前线程(通过ThreadLocal的)一个新的会话,本次会议还附设一个JDBC连接,但是,正如你所看到的,我们并不需要关闭会话(session.close()),无论连接。 那么,什么是一个Hibernate会话,在什么情况下会被关闭的生命周期? 自动?

Answer 1:

我推荐getCurrentSession方法,因为只有用这种方法你必须要确保可能性会议将于休眠关闭

配置J2EE当前会话。

如果您使用openSession方法,你必须自己关闭会话。 之后,我开始接触Hibernate的工作,我认为这件事does'n我用哪一种方法,因为所有的会话将被自动关闭......我错了。 我曾与从休眠中SessionStatistics发现SessionStatistics的公开会议上已经打开,永远不会关闭。

之后,我改变了对所有通话getCurrentSessionimpl 。 会话-per-request模式打开的会话会下班后关闭。

交易基础 。



文章来源: how does hibernate sessionfactory manage session?