Spring学习-day04事务控制

1 事务概述

   1.1 事务控制的2种方式

        手动编程实现

         声明式实现:spring提供了对事务的管理,实现的核心是AOP,通过配置文件的配置,在执行代码的过程中,动态植入事务控制,

对某个方法执行事务控制,不能对方法里的某几行代码进行事务控制,是粗粒度事务控制

   .1.2声明式事务管理实现的2种方式

          aXML配置实现

          b注解实现

   2 XML实现声明式事务

          spring针对jdbc和hibernate有不同的事务管理器类

          jdbc:DatasourceTrsnsactionManager

         hibernate:HibernateTransactionManager

     xml配置事务管理步骤:

       不要忘记引入事务名称空间

        a配置事务管理器类

//这里是进行JDBC操作,所以事务管理器类是DataSourceTransactionManager
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        //第一个dataSource是类中setDataSource的属性名,第2个dataSource是引用配置中的dataSource
		<property name="dataSource" ref="dataSource"></property>
</bean>

        b 配置事务增强(如何管理事务,是只读还是读写

<!-- 5.2 配置事务增强(如果管理事务?) -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true"/>
			<tx:method name="find*" read-only="true"/>
			<tx:method name="*" read-only="false"/>
		</tx:attributes>
	</tx:advice>

         c AOP配置:拦截哪些方法(切入点表达式)+应用上面的事务增强

<!-- 5.3 Aop配置: 拦截哪些方法(切入点表表达式) + 应用事务增强配置 -->
	<aop:config>
       //*表示返回值类型任意
		<aop:pointcut expression="execution(* cn.itcast.a_tx.DeptService.*())" id="pt"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
	</aop:config>

3 注解实现事务控制

 3.1  必须引入Aop相关的jar文件

3.2 bean.xml中指定注解方式实现声明式事务管理以及应用的事务管理器类

    <!-- 开启注解扫描 -->
	<context:component-scan base-package="cn.itcast.b_anno"></context:component-scan>
	
	<!-- 注解方式实现事务: 指定注解方式实现事务,申明引用的事务管理器类 -->
	<tx:annotation-driven transaction-manager="txManager"/>

3.3 在需要添加事务控制的地方,写上: @Transactional

猜你喜欢

转载自blog.csdn.net/liyunfei456/article/details/87990121
今日推荐