关于hibernate的commit和rollback

wlj_526 2007-02-06 09:48:54
本人不是很明白为什么

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又有何用?
望各位大侠详细解释下,多谢了!
...全文
568 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iiitom 2007-02-06
  • 打赏
  • 举报
回复
楼上正解.
hornbilltofy 2007-02-06
  • 打赏
  • 举报
回复
比如有三张表,分别向里面增加一条记录,第一张成功了,第二张也成功了,第三张由于某种原因失败了,这时如果不rollback(回滚)的话,则数据库可就乱套了,如果rollback,则相当于什么也没做,即三张表的数据不会有任何变化;如果第三张也成功了,那么就需要commit(提交),数据库才真正去处理这三张表.
v38 2007-02-06
  • 打赏
  • 举报
回复
要执行tx.commit();具体作用是什么?
另外,rollback又有何用?
=================
这就是事务控制了,简单的说
tx.commit();
tx就是一个事务了,
你在
Transaction tx = hbmSession.beginTransaction();
开始,
当执行tx.commit();的时候,从事务开始到这一行的所有对数据库的操作,才提交给数据库
执行rollback的时侯把 从事务开始到这一行的所有对数据库的操作 都撤消。 也叫事务的回滚
楼主可以到google里找一些关于事务控制的资料看看

ipis_gx 2007-02-06
  • 打赏
  • 举报
回复
都是数据库事务操作相关的,简单点说:
commit是提交一次事务,hibernate在清理缓存时才将commit的结果写入数据库
rollback是当事务操作出现异常时自动回滚,也就是撤销
wlj_526 2007-02-06
  • 打赏
  • 举报
回复
多谢几位,明白了
wise_dog 2007-02-06
  • 打赏
  • 举报
回复
commit和rollback都是数据库相关的。
楼上说得很清楚了。
你可以在数据库中写几个存储过程试试
那样了解得能深一些。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧