数据库操作commit失败后,需要再rollback吗?

dinghun8leech 2009-07-20 09:23:08
问题如题
我先查了一下提交和回滚的原理,都是要建立空间存放新数据、编写logo日志、记录操作内容、获取锁,提交时则更新日志,完成剩下的工作和释放锁,回滚则读取操作内容并进行大量io,最后也释放锁
那么当我们用jdbc的connection或是hibernate操作数据库时异常发生在commit()时,需不需要再进行rollback??
---------------------------------
今天检查时忽然发现有执行正常提交出错的现象,原因是修改某条数据时插入了datetime类型字段不兼容的字符串,本以为前面操作肯定会为此类错误抛出异常。原先的设计是判断操作时是否出异常,之后直接选择是提交还是回滚,且提交失败后无rollback措施。
...全文
1482 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinghun8leech 2009-07-27
  • 打赏
  • 举报
回复
好的,先结了吧,谢谢大家。
这类问题我忽然想到,去看看hibernate的文档似乎是更好的找到答案的办法。
dinghun8leech 2009-07-25
  • 打赏
  • 举报
回复
再确认一次。。。。
jdbc--commit出exception后需要rollback??
hibernate--commit出exception后需要rollback??
spring(ssh)--commit出exception后不需要rollback??
landyou9 2009-07-25
  • 打赏
  • 举报
回复
jdbc 需要
hibernate 需要
SSH 不需要
qq774097676 2009-07-20
  • 打赏
  • 举报
回复
一般数据库出错了 最好都进行回滚操作 因为很可能改变数据库的数据 造成数据错误 jdbc和hibernate都可以进行手动的事务提交和回滚(放在try catch 和finally里)但有些框架对事务提交回滚等进行了封装 可以不手动的事务提交和回滚
qq774097676 2009-07-20
  • 打赏
  • 举报
回复
一般数据库出错了 最好都进行回滚操作 因为很可能改变数据库的数据 造成数据错误 jdbc和hibernate都可以进行手动的事务提交和回滚(放在try catch 和finally里)但有些框架对事务提交回滚等进行了封装 可以不手动的事务提交和回滚
qq774097676 2009-07-20
  • 打赏
  • 举报
回复
一般数据库出错了 最好都进行回滚操作 因为很可能改变数据库的数据 造成数据错误 jdbc和hibernate都可以进行手动的事务提交和回滚(放在try catch 和finally里)但有些框架对事务提交回滚等进行了封装 可以不手动的事务提交和回滚
dinghun8leech 2009-07-20
  • 打赏
  • 举报
回复
当然是数据库事务咯
目前我用的hibernate,数据库时mysql,但是我想知道所有技术(无论是jdbc还是hibernate还是其他什么的),无论什么数据库,到底需不需要在commit出错时再rollback
  • 打赏
  • 举报
回复
“需不需要再进行rollback”?
看楼主什么事务啊


一般来说在异常里捕获
downmoon 2009-07-20
  • 打赏
  • 举报
回复
不同数据库有不同操作。你在执行sql语句时可以包装成事务。
sheriguan 2009-07-20
  • 打赏
  • 举报
回复
spring 不用
没有用spring 需要捕捉异常,然后rollback
sj2love0qh 2009-07-20
  • 打赏
  • 举报
回复
hibernate配置了事务的话。不需要手动rollback。hibernate会自己判断的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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