hibernate框架是一款很不错的数据库映射操作框架,使用不当会造成各种各样的问题,比如有时候添加一条记录,返回结果表示修改成功,有时候并没有写入数据库,有时即使写入了数据库后,点击前台的查看数据,连续点击请求,每次得到的数据都不同,有时是添加前的数据,有时候是添加后的数据。
解决方案:
原因是没有提交事务,并且提交事务之后没有关闭session,将原来的save以及所有其他的方法添加上提交事务,以及关闭事务的操作,比如将save方法修改为为以下代码格式:
<pre name="code" class="java">public void save(Chair transientInstance) {
log.debug("saving Chair instance");
Session session = getSession();
Transaction tran = null;
try {
tran = session.beginTransaction();
session.save(transientInstance);
tran.commit();
log.debug("save successful");
} catch (RuntimeException re) {
tran.rollback();
log.error("save failed", re);
throw re;
} finally {
session.close();
}
}