spring 註解式事務配置方法及注意事項

配置方法

1. spring xml配置及使用

spring的xml文件中加入如下內容:


	<!-- 配置事務管理 -->
	<bean id="tm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	<!-- 聲明 使用註解式事務,對標註@Transactional的方法或類進行事務管理 -->
	<tx:annotation-driven transaction-manager="tm"/>

2. 使用

配置完成後,在需要進行事務管理的Service類或方法上,加上@Transactional註解即可。

@Transactional的更多用法見百度。

3. 配置項說明

其中,"<bean id=“tm” …>" 聲明一個事務管理器,並指定事物管理類,聲明事務管理器時,需要指定數據源,這裏的dataSource是項目使用的druid數據源,裏面指定了jdbc類和數據庫ip、賬號密碼等。

不同的持久層框架用不同的類,我用的是ibatis.

事物管理類與持久層框架的對應關係:

事物管理類 持久層框架
org.springframework.jdbc.datasource.DataSourceTransactionManager iBatis/Spring Jdbc/Mybatis
org.springframework.orm.hibernate3.HibernateTransactionManager Hibernate
org.springframework.orm.jpa.JpaTransactionManager Jpa
org.springframework.jdo.JdoTransactionManager Jdo
org.springframework.transaction.jta.JtaTransactionManager Jta

“<tx:annotation-driven transaction-manager=“tm”/>” 聲明瞭啓用註解方式將添加@Transactional註解的對象納入事務管理。transaction-manager的值是事務管理器的id.

注意事項

  • @Transaction加在方法上時,必須加在public方法上,否則不起作用。
  • 在一個需要事務的Service裏面,調用另一個service方法,則被調用的方法也需要加上事務註解。
  • 不能把“導致出現rollback的異常”cache掉,應該在方法聲明處向上層拋出。因爲spring在動態代理時,在發生異常時,在cache塊裏面進行rollback. 如果需要cache,則需要在cache塊裏面顯示的的rollback.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章