数据库事务

1 数据库事务的ACID属性
原子性(atomic)
  对于中包含的操作,要么全部执行,要么全部不执行。
一致性(consistent)
  事务在完成时,必须使所有的数据都保持一致状态。
隔离性(insulation)
    当多个事务并发执行的时候,不同之间数据的可见程度。
持久性(durability)
  事务完成之后,更改的数据是永久的。

2 事务的隔离性的级别包括:
Read_Uncommited
Read_Commited
Repeatable_Read
Serializeble
具体参见博客: http://www.cnblogs.com/zhangpengme/archive/2011/11/24/2261975.html

3 事务的传播特性
事务的传播属性是在Spring框架中配置事务的时候需要理解的。Spring支持的事务传播属性有7种:包括:
Required:表示当前方法需要在事务环境中运行。如果当前已经有事务环境,就在当前事务环境中运行,如果当前没有事务环境,就新建一个事务环境并在其中运行。
Required_New:表示当前方法需要在新的事务环境中运行。如果当前已经有事务环境,则挂起。然后新建一个事务环境并在其中运行。
Mandatory:表示当前方法需要在事务环境中运行。如果当前不在事务环境中,就会抛出异常。
Supports:表示当前方法可以在事务环境中运行。如果当前在事务环境中,就以事务的方式运行。如果不在事务环境中,就以非事务方式运行。
Not_Supported:表示当前方法不可以在事务环境中运行。如果当前在事务环境中,则挂起。然后以非事务方式运行。
Never:表示当前方法不能以事务方式运行。如果当前在事务环境中,就会抛出异常。
Nested:表示当前方法以嵌套事务的方式运行。如果当前在事务环境中,即在父事务环境中创建一个子事务环境。如果当前不在事务环境中,就以Required方式运行。

4 并发事务可能导致的问题

脏读:一个事务读取了另一个事务改写但尚未提交的数据。
不可重复读:同一次事务中执行了相同的查询两次以上,但每次查询的结果不同。通常由于另一个事务在两次查询更新了数据。
幻影读:一个事务读取了几行数据,接着另一个并发事务插入了一些数据。随后的查询中,第一个事务会发现多了一些原本不存在的数据。

幻读与不可重复读类似:前者是指两次读取中,另一个事务进行了插入操作,导致读取到原来不存在的值。后者是指两次读取中,另一个事务进行了更新,导致两次的数据信息不一致。

你可能感兴趣的:(spring,事务的传播特性)