Hibernate中,将session绑定到线程时,在保存和查询数据的代码里,要正确的关闭session
比如有个保存的方法
// 保存
public void save(){
Transaction t = XXX
Session s = getSession.beginTransaction();
XXX
s.save();
XXX
// 关闭session
HibernateFactory.closeSession();
}
///查询
public void query(){
List list = query.list();
// 关闭session
HibernateFactory.closeSession();
}
public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } }
如果保存的时候,不调用相应代码正确的关闭session,就可能出现的情况是:已经保存了数据,数据库也改了,但页面上时而又显示以前的数据。