Hibernate中,将session绑定到线程时,在保存和查询数据的代码里,要正确的关闭session

时间:2021-07-30 09:55:11

比如有个保存的方法

// 保存

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,就可能出现的情况是:已经保存了数据,数据库也改了,但页面上时而又显示以前的数据。