是否需要创建事务,是由事务传播行为控制的。读数据不需要或只为其指定只读事务,而数据的插入,修改,删除就需要事务管理了。
1.使用事务代理工厂bean管理事务
(1)配置事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>(2)创建事务代理工厂
<bean id="accountServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><!--引用事务管理器--><property name="transactionManager" ref="transactionManager"></property> <!--目标对象 引用service的bean--> <property name="target" ref="service"></property> <!--怎样的增强 --> <property name="transactionAttributes"> <props><!--<prop key="buy*">ISOLATION_DEFAULT,PROPAGATION_REQUIRED,-StockException</prop> </props> </property></bean>ISOLATION_DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 . PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置 -号代表遇到该异常时事务进行回滚 +号代表遇到该异常时仍提交该事务-->