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();

每一天都不可追回,所以更要珍惜每一寸光阴,

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

相关文章:

你感兴趣的文章:

标签云: