日期:2014-05-18  浏览次数:20651 次

关于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都是数据库相关的。
楼上说得很清楚了。
你可以在数据库中写几个存储过程试试
那样了解得能深一些。