事务的四个特点
1.原子性 一组事务要么都发生,要么都不发生
2.一致性 事务前后数据的完整性要保持一致
3.隔离性 多个事务并发的访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发事务之间
数据要相互隔离
4.持久性 一个事务一旦被提交,它对数据库中数据的改变就是永久性的,就算数据库发生故障也不会该对其有影响
如果不考虑事务的隔离性,会出现以下问题:
- 脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。
- 不可重复读(虚读):指一个线程中的事务读取到了另外一个线程中提交的update的数据。
- 幻读:指一个线程中的事务读取到了另外一个线程中提交的insert的数据。
Sping事务管理高层抽象主要包括三个接口
Platform TransactionManager 事务管理器
TransactionDefintion 事务定义信息(隔离,传播,超时,只读)
TransactionStatus 事务运行的状态
Spring为不同的持久化框架提供了不同的,Platform TransactionManager,接口实现
事务的隔离级别
Mysql默认采用Repeatable_read隔离级别
Oracle默认采用的Read_committed隔离级别
主要记:1 , 4 , 7 三种