事务:原子性,一致性,隔离性,持久性。
一致性就是最终目标,保证正确。
数据并发问题:
脏读:A事务更改数据未提交,B事务读取
不可重复读:A事务读取的过程中,B事务修改数据,两次读的同一个值不一样。(修改或者删除)
幻象读:和不可重复读类似,这次是新增
第一类丢失更新:A提交,B提交,回滚破坏了数据。
第二类丢失:A提交,B 提交,覆盖了数据。
数据库锁:表锁定,行锁定,又可以分为共享锁定,和独占锁定。
事务隔离级别:
Read uncommited 第一类丢失
Read committed 脏读,第一类丢失。
Repeatable Read
Serializable
隔离级别和并发性是对立的。
提交,回滚,设置回滚点。
spring对事物管理的支持:
TransactionDefinition:定义事务隔离,事务传播,事务超时,只读状态。等配置属性。
platformTransactionManager:可以根据配置,产生事务。事务管理器接口
TransacitionStatus:代表事务的具体运行状态
spring将事务管理委托给底层具体的持久化实现框架来完成
不同的持久化框架有不同事务管理器实现类。implement PlatformTransactionManager
事务同步管理器:使用ThreadLocal实现线程安全
事务传播行为:
一个@Transaction 就可以搞定。