关于hibernate的commit和rollback
本人不是很明白为什么
Session hbmSession = HibernateSessionFactory.currentSession();
Transaction tx = hbmSession.beginTransaction();
Company company = (Company)hbmSession.get(Company.class , id);
company.setName(name);
company.setAddress(address);
hbmSession.save(company);
tx.commit();
要执行tx.commit();具体作用是什么?
另外,rollback又有何用?
望各位大侠详细解释下,多谢了!
------解决方案--------------------都是数据库事务操作相关的,简单点说:
commit是提交一次事务,hibernate在清理缓存时才将commit的结果写入数据库
rollback是当事务操作出现异常时自动回滚,也就是撤销
------解决方案--------------------要执行tx.commit();具体作用是什么?
另外,rollback又有何用?
=================
这就是事务控制了,简单的说
tx.commit();
tx就是一个事务了,
你在
Transaction tx = hbmSession.beginTransaction();
开始,
当执行tx.commit();的时候,从事务开始到这一行的所有对数据库的操作,才提交给数据库
执行rollback的时侯把 从事务开始到这一行的所有对数据库的操作 都撤消。 也叫事务的回滚
楼主可以到google里找一些关于事务控制的资料看看
------解决方案--------------------比如有三张表,分别向里面增加一条记录,第一张成功了,第二张也成功了,第三张由于某种原因失败了,这时如果不rollback(回滚)的话,则数据库可就乱套了,如果rollback,则相当于什么也没做,即三张表的数据不会有任何变化;如果第三张也成功了,那么就需要commit(提交),数据库才真正去处理这三张表.
------解决方案--------------------楼上正解.
------解决方案--------------------commit和rollback都是数据库相关的。
楼上说得很清楚了。
你可以在数据库中写几个存储过程试试
那样了解得能深一些。