事务的属性:原子性 一致性 隔离性 持久性
原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生
一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
声明式事务
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"></property>
</bean>
<!-- 启动事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
然后在用到事务的方法或类上添加 @Transactional注解
事务的传播属性:
一个事务方法调用另一个事务方法 该如何传播。如:方法可能在现有的事务中运行 也可能开启一个新的事务
并在自己的事务中运行。
常用的传播属性时候required 和 required_new.
required (默认):如果有事务在运行 当前方法就在这个事务内运行 否则开启新的事务 并在自己的事务内运行
通俗的说 事务方法A里有一个事务方法B.如果事务方法B中出现异常则回滚到事务A开始时的状态 即事务B和A中
的所有数据都恢复。@Transaction(propagation=Propagation.REQUIRED)
required_new:当前方法必须开启新事务 并在自己的事务内运行 如果有事务正在运行 则将它挂起.
通俗的说:事务方法A里有一个事务方法B。如果运行到事务方法B的时候 事务方法A中的事务 挂起。 在方法B中
开启一个新的事务。如果方法B出现异常 则仅仅方法B中的数据回滚恢复。
更多参考:http://blog.csdn.net/yanyan19880509/article/details/53041564