关于Spring事务处理

关于Spring事务处理

在事物处理的代码中,往往用try/catch将事务包起来,在catch里写个rollback,如:
try{

    insert();    //假设为正确的插入

    select();    //假设语句有错误

    commit();    //提交事务

} catch(Exception e){

    e.printStackTrace();

    rollback();

}
但是,在try中执行成功了第一行语句,执行成功第二行时报错就不再执行try剩下的代码而是跳到catch了,这时候事务也就没有commit,则第一行也就没有生效,那rollback这行代码不就是多余的了吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学提供的这段代码,假设是针对同一个表的操作,那么这个操作是有问题的;

插入之后,不提交事务是查询不到插入的这条数据的;

不过通常都会在catch块中加入rollback()回滚的,假设异常发生在commit()方法处,或者commit()方法之前,是无法确定数据是不是已经插入的,此时回滚可以保证数据库的干净,不至于出现脏数据。

祝学习愉快! 

  • NJAUer 提问者 #1
    可以理解为在commit之前的插入操作一般都是还没真正插入的,一般不会有影响,跳到catch而执行rollback只是更加保险,对吗?
    2018-07-24 19:18:55
  • 一叶知秋519 回复 提问者 NJAUer #2
    是的,可以这么理解。祝学习愉快!
    2018-07-25 09:39:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师