编程式事务
@Resource private TransactionTemplate transactionTemplate; public void saveData(Object obj) { queryDataOne(); queryDataTwo(); transactionTemplate.execute(state -> { addDataOne(); updateDataTwo(); return Boolean.TRUE; }) }
在spring中为了支持编程式事务,专门提供了一个类:TransactionTemplate,在它的execute方法中,就实现了事务的功能。
相较于@Transactional
注解声明式事务,我更建议大家使用,基于TransactionTemplate
的编程式事务。主要原因如下:
- 避免由于spring aop问题,导致事务失效的问题。
- 能够更小粒度的控制事务的范围,更直观。
随笔看心情