事务是企业应用中至关重要的部分,即使出现异常情况,它也可以保证数据的一致性。
一、事务的四个特性(ACID)
1)原子性(Atomicity)
一个事务是不可分割的,在发生错误时终止一切事务,放弃全部的操作,要么全部成功要么全部失败
2)一致性(Consistency)
事务必须保证数据库从一个一致性状态变到另一个一致性状态
3)隔离性(Isolation)
当发生一个事务时,不被另一个事务干扰,如果被干扰会发生并发问题
4)持久性(Durability)
一个事务的提交对数据库来说是永久性保存的,后面的操作和故障都不因该引起其他影响
二、@Transactional属性配置事务
ropagation // 事务的传播行为
isolation // 事务的隔离级别
rollbackFor // 事务回滚属性--遇到什么异常必须回滚
noRollbackFor // 事务回滚属性--遇到什么异常不回滚
timeout // 事务超时属性--单位-秒,
readOnly // 事务只读形式--事务只能读取数据不能更新数据
三、注解方式配置声明
@EnableTransactionManagement//中心类添加注解
public class Config {
//产生事务管理器Bean对象
@Bean
public TransactionManager getTransactionManager() {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(this.getDataSource());
return dataSourceTransactionManager;
}
}
//在需要处理事务的地方,包括类、方法添加@Transaction运用
@Transactional(propagation = Propagation.REQUIRES_NEW,//事务传播行为
isolation = Isolation.READ_COMMITTED,//事务的隔离级别
rollbackFor = IOException.class,//事务回滚性--遇到什么异常必须回滚
noRollbackFor = ArithmeticException.class,//处理异常出现异常不回滚,默不设置回滚
timeout = 10,//事务超时属性
readOnly = true//事务只读属性
)//运行使用事务