事務的屬性:原子性 一致性 隔離性 持久性
原子性是指事務是一個不可再分割的工作單位,事務中的操作要麼都發生,要麼都不發生
一致性是指在事務開始之前和事務結束以後,數據庫的完整性約束沒有被破壞。這是說數據庫事務不能破壞關係數據的完整性以及業務邏輯上的一致性。
隔離性:多個事務併發訪問時,事務之間是隔離的,一個事務不應該影響其它事務運行效果。
聲明式事務
<!-- 事務管理器 -->
<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