@Transactional 注解相信大家并不陌生,平时Spring开发中很常用的一个注解,它能保证方法内多个数据库操作的事务性和原子性。在使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。
首先呢,先简单介绍下Spring的事务:
1、事务
Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。
1)编程式事务
是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下:
Java
1
2
3
4
5
6
7
try{
//TODO something
transactionManager.commit(status);
}catch(Exceptione){
transactionManager.rollback(status);
thrownewInvoiceApplyException("Error");
}
2) 声明式事务
基于AOP面向切面的编程,它将具体业务与事务处理部分解耦,代码侵入性很低。
所以在实际开发中声明式事务用的比较多。声明式事务也有两种实现方式,一是基于TX和AOP的xml配置文件方式,还有一种就是基于@Transactional注解了。
Java
1
2
3
4
5
6