编程式事务需要你在代码中直接加入处理事务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、 rollback()等事务管理相关的方法,如在执行a方法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束时候,关闭事务.
声明式的事务的做法是在a方法外围添加注解或者直接在配置文件中定义,a方法需要事务处理,在spring中会通过配置文件在a方法前后拦截,并添加事务.
声明式事务:
在配置文件中将事务配置好,通过bean的形式,调用spring的事务。然后在程序中不需要太多的事务管理代码,比如事务commit,backroll等
程序式事务:
就是在程序中获得spring的事务,然后通过此事务管理对象来操作事务,比如事务提交,回滚等,也就是说程序中需要通过代码的形式来管理事务。
为什么要有事务管理?
事务都是为了保证数据的一致和完整,保证整个操作的原子性。不论是spring事务还是×××事务,都一样。
银行扣款流程的例子就不举了。
一般什么时候用?
简单的一句select就用不到事务,当然,如果你的这个select要记录日志,日志记录出错不让select,那就又是一个事务了。
还有一些,比如,上传文件。文件保存在操作系统,相关信息保存在数据库,要么两个保存都成功,要么都失败,这么也是一个事务了。