spring支持的事務管理
1、編程式事務:
需在spring.xml配置文件中,
1、配置數據源、
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 對象裏面註入的是數據源及框架的屬性配置;
3、需編寫事務管理器 transcationManager, 對象裏面註入的是數據源對象;
4、配置事務模板 transactionTemplate ,對象裏面註入的是事務管理器對象;
5、需配置持久化dao,需註入 持久化模板對象和 事務模板對象 兩個;
6、在dao層的對象中,所有的增刪改需放在 事務模板的內部類中 實現持久化操作;
2、聲明式事務 需在spring.xml文件配置:
1、配置數據源;
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 對象裏面註入的是數據源及框架的屬性配置;
3、配置事務管理器 transcationManager, 對象裏面註入的是數據源對象;
4、通過aop配置聲明式事務(切入的規則,切入點兩個標簽)
5、配置持久層dao, 需註入 持久化模板對象即可。
6、在dao層,所有的增刪改使用持久化模板來完成數據的持久化操作; 聲明式相對編程式: 代碼更寬松,只配置在xml文件中即可,利用aop的橫切規則即能完成事務的操作; 跟持久層的代碼沒有耦合;
3、註解式事務 需在spring.xml文件配置:
1、配置數據源;
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 對象裏面註入的是數據源及框架的屬性配置;
3、需編寫事務管理器 transcationManager, 對象裏面註入的是數據源對象;
4、使用<tx:annotation-driven transaction-manager="transcationManager"/> 註解,指向事務管理器;
5、持久層dao的代碼,[email protected] 註解, 然後在spring.xml文件中配置包掃描;
6、持久層dao類中的所有增刪改(需要事務支持的方法),[email protected]
2中的聲明式事務中方法的配置屬性: <tx:method name="add*" propagation="REQUIRED" timeout="-1" no-rollback-for="" read-only="false" rollback-for="" isolation="DEFAULT" />
name: 匹配的方法名稱
propagation:事務的傳播屬性,一共有7個值(REQUIRED,REQUIRED_NEW,SUPPORTS, MANDATORY,NOT_SUPPORTED,NEVER,NESTED)
timeout: 事務執行的事件控制, 超時時間;
rollback-for: 見到什麽異常就回滾;
no-rollback-for: 見到什麽異常一定不回滾;
isolation: 事務的傳播屬性,一共有4個值(default,read-only,read-write,transaction)
read-only: 只讀;
spring支持的事務管理