我刚刚得到了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连接,但是,正如你所看到的,我们不需要关闭会话(会话.close()),无论该连接。那么,什么是一个Hibernate会话,在什么情况下会被关闭的生命周期?自动?
我推荐的方法getCurrentSession
因为只有用这种方法你必须要确保可能性会议将于休眠关闭
Configuration J2EE Current Session.
如果使用openSession
方法,你必须自己关闭会话。之后,我开始接触Hibernate的工作,我认为这件事does'n我用哪一种方法,因为所有的会话将被自动关闭......我错了。我曾与从休眠SessionStatistics的公开会议上已经打开,永远不会关闭的SessionStatistics发现。
之后,我改变了所有调用getCurrentSession
和impl
。会话-per-request模式打开的会话会下班后关闭。