事物回滚和不提交有和区别?

孤零落叶寒 2012-02-27 05:32:50
用事物操作数据库,如果我不提交和rollback有什么区别?对内存有影响吗?
...全文
996 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly707822 2013-12-19
  • 打赏
  • 举报
回复
受教了 今天突然遇到这个问题
五哥 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 henushang 的回复:]
不提交根本就是没有进行任何的操作,而回滚是因为在事物提交的过程中遇到了一些问题,取消刚才进行的操作,这区别是相当的明显的,lz不知道是不是真的不明白啊
[/Quote]

++1
孤零落叶寒 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 beiouwolf 的回复:]

在同一事务条件下,回滚和不提交,表现是一样的
但是还有些差别

事务处理,是将操作事件交给数据库(模拟)运行,直到commit操作,才使得修改实际产生效果,你可以看做是未提交事务都是处于一个临时库中进行
回滚是对于同一个事务,如果产生了错误,那么取消这个临时库中的操作,不对实际数据产生影响

最主要的区别在于,如果不回滚,这些临时操作会持续到这个个connection结束为止,也就是……
[/Quote]

多谢大哥
孤零落叶寒 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 henushang 的回复:]

不提交根本就是没有进行任何的操作,而回滚是因为在事物提交的过程中遇到了一些问题,取消刚才进行的操作,这区别是相当的明显的,lz不知道是不是真的不明白啊
[/Quote]
奥,明白了。多谢
孤零落叶寒 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iisgirl 的回复:]

之所以要回滚,就是防止提交过程中出现dao访问异常,回滚是对于数据库层面而言的。

但是不提交,压根就不可能与数据库打交道。
[/Quote]
奥,明白了,多谢赐教
beiouwolf 2012-02-28
  • 打赏
  • 举报
回复
在同一事务条件下,回滚和不提交,表现是一样的
但是还有些差别

事务处理,是将操作事件交给数据库(模拟)运行,直到commit操作,才使得修改实际产生效果,你可以看做是未提交事务都是处于一个临时库中进行
回滚是对于同一个事务,如果产生了错误,那么取消这个临时库中的操作,不对实际数据产生影响

最主要的区别在于,如果不回滚,这些临时操作会持续到这个个connection结束为止,也就是虽然你看不到,但是临时库的操作依然存在,而回滚是即时生效,其实都是回滚了,只是时间点的不一样
赵Andy 2012-02-27
  • 打赏
  • 举报
回复
不提交根本就是没有进行任何的操作,而回滚是因为在事物提交的过程中遇到了一些问题,取消刚才进行的操作。
回滚以前可能进行过一些数据库插入删除更新,一回滚就回到从前,不提交就根本没有进行插入删除更新。
孤独人生 2012-02-27
  • 打赏
  • 举报
回复
不提交根本就是没有进行任何的操作,而回滚是因为在事物提交的过程中遇到了一些问题,取消刚才进行的操作,这区别是相当的明显的,lz不知道是不是真的不明白啊
昨日凡阳 2012-02-27
  • 打赏
  • 举报
回复
之所以要回滚,就是防止提交过程中出现dao访问异常,回滚是对于数据库层面而言的。

但是不提交,压根就不可能与数据库打交道。
孤零落叶寒 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 beiouwolf 的回复:]

在同一事务中来说,不提交相当于rollback
[/Quote]
谢谢大哥,看来表达能力太差,就您理解了。不提交和rollback他们对内存来说没区别吗?事物的临时操作不提交和回滚哪个可以快速释放垃圾?还有就是看网上事物例子,setAutoCommit设置false后,操作完事物又把默认提交方式设置成了true,之后就没其他操作了,我很纳闷,难道他们程序中就一个Connection?还是这有其他用?
孤零落叶寒 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java_pengjin 的回复:]

你这问题问的太纠结了吧。该提交提交,该回滚回滚。不提交的话基本相当于什么都没干 这和你干了事又推倒重来本质没舍呢么区别 个人愚见
[/Quote]
在没成功的时候我不提交不行吗?为什么要回滚,又不是直接操作数据库?难道不会滚操作的临时表会在内存中不释放?
孤零落叶寒 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangxiaojun9238 的回复:]

提交了,说明事务成功了,如果事务之前没有成功,就考虑回滚,符合事务的原子性,要么都成功,要么全不成功
[/Quote]
没成功就回滚?但如果没成功我就不提交,他们有什么区别呢?
beiouwolf 2012-02-27
  • 打赏
  • 举报
回复
在同一事务中来说,不提交相当于rollback
LFDream 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 flyer_ren 的回复:]
用事物操作数据库,如果我不提交和rollback有什么区别?对内存有影响吗?
[/Quote]

如果你设置事务手动提交的话你不提交事务,那你操作了半天有用吗?还不是相当于你什么事都没有干,操作数据库就等于你没操作。rollback是保证数据同步的 , 如果某一步出现问题 ,你不rollback数据肯定不能完全保证一致,这能行么,尤其是安全性比较好的项目(比如:银行方面的项目)。
yangxiaojun9238 2012-02-27
  • 打赏
  • 举报
回复
提交了,说明事务成功了,如果事务之前没有成功,就考虑回滚,符合事务的原子性,要么都成功,要么全不成功
Phoenix Slade 2012-02-27
  • 打赏
  • 举报
回复
commit和rollback 看看
jamespengo 2012-02-27
  • 打赏
  • 举报
回复
你这问题问的太纠结了吧。该提交提交,该回滚回滚。不提交的话基本相当于什么都没干 这和你干了事又推倒重来本质没舍呢么区别 个人愚见

81,092

社区成员

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

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