日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring框架关于事务处理的API和使用步骤

發布時間:2025/3/21 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring框架关于事务处理的API和使用步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring中的事務管理全部要經過事務管理器來實現.

因此無論是注解的方式還是xml的方式實現的事務都必須要配置事務管理器.

因為事務是基于數據庫連接的,所以事務管理器依賴于連接池創建的連接,因此事務管理器需要注入連接池屬性.

一.Spring基于注解的事務管理

spring 關于事務管理的3個API:

  • PlatformTransactionManager
    ①DataSourceTransactionManager:JDBC的事務管理器
    ②HibernateTransactionManager:Hibernate的事務管理器

  • TransactionDefinition:

  • TransactionStatus:

①導入jar(4個核心+日志+spring-jdbc+spring-tx)

②把數據庫連接池交給spring管理

<!-- 引入外部資源文件 --> <context:property-placeholder location="classpath:db.properties"/><!-- 配置數據庫連接池 --><bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean>

③將事務管理器交給spring管理并注入數據源

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入數據源 --><property name="dataSource" ref="datasource"></property></bean>

④開啟spring 管理事務的注解驅動,與事務管理器對應

<tx:annotation-driven transaction-manager="transactionManager"/>

⑤在需要進行事務管理的業務方法上加@Transactional注解即可.

二.Spring基于Xml的事務管理:

因為spring把事務管理的過程(取消連接的自動提交,回滾等)封裝在了事務管理器中,因此這些抽取出來的方法和過程應該作為切面類作用在業務方法中.

①將事務管理器交給spring 管理,并作為一個切面類

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入數據源 --><property name="dataSource" ref="datasource"></property></bean>

②將通知作用在切面類上,和平臺事務管理器進行關聯

<!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 傳播行為 --><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="create*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="find*" propagation="SUPPORTS" read-only="true" /><tx:method name="select*" propagation="SUPPORTS" read-only="true" /><tx:method name="get*" propagation="SUPPORTS" read-only="true" /><tx:method name="query*" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice>

③將切入點表達式作用在通知上,和通知進行關聯

<aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.sms.spring.service.impl.*(..))" /></aop:config>

三.關于事務的四個屬性

  • 事務的傳播行為:Propagation
    用法:@Transactional(propagation=Propagation.REQUIRED):設置為必須使用調用者的事務
  • 事務的隔離級別:Isolation
    用法:@Transactional(isolation=Isolation.READ_COMMITTED):設定隔離級別為讀已提交
  • 事務的超時回滾:timeOut
    用法:@Transactional(timeout=3):事務執行三秒未完成后進行強制回滾
  • 事務的是否只讀:read-only
    用法:@Transactional(readOnly=true):設定為只讀
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Spring框架关于事务处理的API和使用步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。