首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Hibernate 中getSession().save() 保存不到数据库 解决方法

2012-09-20 
Hibernate 中getSession().save() 保存不到数据库 解决办法背景:普通的java项目,单独添加hibernate框架,不

Hibernate 中getSession().save() 保存不到数据库 解决办法
背景:
普通的java项目,单独添加hibernate框架,不添加其他任何框架的情况下。

分析:
没有使用事务管理模式,myEclipse的反向工程生成的dao的save方法

         public void save(Cigarette transientInstance) {
log.debug("saving Cigarette instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
并不能说这个没有添加事务管理模式,只不过这么写他有的时候灵有的时侯不灵,那我们改为显示的提交事务就成了!

        public void save(Cigarette transientInstance) {
log.debug("saving Cigarette instance");
Transaction transaction= getSession().beginTransaction();
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
transaction.commit();
getSession().flush();
getSession().close();
}

结论:
hibernate成功执行sava且不报错后,数据库中没有数据的原因:hibernate 必须显示的声明提交事务


JDBC默认的是自动提交
Hibernian默认的是手动提交,必须开启事务,手动提交,否则数据库中没有保存的记录:
            Transaction transaction= getSession().beginTransaction();
            getSession().save(transientInstance);
            transaction.commit();



以上总结了网上的资料,自己实践得出结论 1 楼 yuantong 2010-10-10   但凡接触过H的人都知道啊 2 楼 maoxy 2010-10-13   yuantong 写道但凡接触过H的人都知道啊

我刚知道

热点排行