以下转载lukejin (中级程序员)的话
关键还是个粒度问题吧,
有时候我们的操作有业务上的事务,
比如a操作和b操作必须保证原子性。
那么就需要使用事务了。
当然你自己用jdbc来写也是可以的,只是没有spring配置这么优雅灵活。
事务确实是数据库的事情,但是我们得要把事务的起点和终点告诉数据库吧。
如果你直接使用jdbc的话就会需要如下类似的代码:
就是将自动提交设为false之后,连续的几个数据库操作,如果成功的话,则提交完成一个事务,如果某个发生异常,则回滚。
而Spring的失误处理,底层也就是这样的,只是spring的方式给程序员提供了便捷,AOP,让程序员不要在关心这些重复的try catch ,只需要关心业务代码。
上面的两个sql从业务上说必须要么都执行,要不都不执行。