事务
1、事务的特性
1、原子性(Atomicity) 是指事务一个不可分割的工作单位,事务中的操作要么都发生要么都不发生
2、一致性(Consistency) 事务前后数据的完整性必须保持一致
3、隔离性(Isolation) 代表的是一个用户的事务不能被其他用户的事务所干扰,多个并列事务之间数据要相互隔离
4、持久性(Durability) 持久性就是一个事务一提交,他对数据库中数据的改变是永久性的,接下来即使数据发生故障也不应该对其有任何影响
2、事务并发问题
1、脏读(dirty read) A事务读取B事务尚未提交的更改数据,并在这个数据的基础上操作。如果恰巧B事务回滚,那么A事务读到的数据根本不承认读取;
2、不可重复读(unrepeatable read) 不可重复读是指A事务读取了B事务已经提交的更改数据,假设A在取款事务的过程中,B往该账户转账100元,A两次读取账户的余额发生不一致
3、幻读(phantom read) A事务读取B事务提交的新增数据,这时A事务将出现幻象读的问题,幻想读一般发生在计算统计数据的事务中,比如,假设银行系统在同一个事务中,两次统计存款账户的总金额,在两次统计过称中,刚好新增一个存款账户,并存入一百元,这是,两次统计的总金额不一致
3、事务的隔离级别
1、 1读未提及
2、 2读已提交
3、 4可重复读
4、 8串行化
spring封装了事务管理代码
1、事务操作
1、打开事务
2、提交事务
3、回滚事务
2、事务操作对象
1、因为在不同的平台,操作事务的代码各不相同,spring提供了一个接口 PlatformTransactionManager
这个接口中封装了DataSourceTransactionManager和HibernateTransitionManager
注意在spring中用事务管理,最关键的事TransactionManager
2 、spring事务的属性介绍
1、事务的隔离级别
1、读未提交
2、读已提交
4、可重复读
8、串行化
2、是否只读
1、true 只读
2、false 可操作
3、事务的传播行为Propagation