Spring系列第10篇:Spring中的声明式事物

一、spring中事物控制的一组API

1.PlatformTransactionManager(未完)

提供事物的操作方法有以下三个接口:
获取事物状态信息:
TransactionStatus getTransaction(@Nullable TransactionDefinition definition)
提交事物:
void commit(TransactionStatus status) throws TransactionException;
回滚事物:
void rollback(TransactionStatus status) throws TransactionException;
我们在开发中常用它的实现类如下
使用Spring JDBC或iBatis进行持久化数据的时候用:
org.springframework.jdbc.datasource.DataSourceTransactionManager;
使用Hibernate版本进行持久化数据的时候使用:HibernateTransactionManager

2.TransactionDefinition中定义的事务的信息(未完)

获取事物对象的名称:String getName()
获取事物的隔离级别:int getIsolationLevel()
获取事物的传播行为:int getPropagationBehavior()
获取事物的超时时间:int getTimeout()
获取事物是否只读:boolean isReadOnly()
读写型事物:增删改开启事物
只读型事物:执行查询时开启事物

二、Spring基于XML声明事物控制

1.Spring中基于xml的声明式事物配置步骤

1.配置事物管理器
2.配置事物的通知,需要导入事物的约束(Data Access中搜索xmlns:aop)
3.配置aop中的切入点表达式
4.建立事物通知和表达式的对应关系
5.配置事物的属性
在tx:advice标签的内部< tx:attributes>配置属性有:
isolation:指定事物的隔离级别,默认值是DEFAULT,使用数据库的默认级别
propagation:用于指定事物的传播行为,默认值是REQUIRED,表示一定会有事物,增删改的选择。查询方法:SUPPORTS
read-only:用于指定事物是否为可读,只有查询方法才能设定为true 默认值是flase表示读写
timeout:用于指定事物的超时时间默认值是-1表示永不超时,如果指定了数值以秒为单位
rollback-for:用于指定一个异常,当产生该异常时事物回滚,当产生其它异常时事物不回滚。没有默认值。表示任何异常都回滚
no-rollback-for:用于指定一个异常,当产生该异常时事物不回滚。产生其它异常时事物回滚,没有默认值。表示任何异常回滚

    <!--配置事物管理器-->
    <bean id="transcationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--配置事物的通知-->
    <tx:advice id="txAdivce" transaction-manager="transcationManager">
        <!--配置事物的属性-->
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED" read-only="false"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"></tx:method>
        </tx:attributes>
    </tx:advice>
    <!--配置aop-->
    <aop:config>
        <!--配置切入点表达式-->
        <aop:pointcut id="pt1" expression="execution(* com.ming.service.jdbctemplate.impl.*.*(..))"/>
        <!--配置事物通知和表达式的对应关系-->
        <aop:advisor advice-ref="txAdivce" pointcut-ref="pt1"></aop:advisor>
    </aop:config>

二、Spring基于注解的声明式事物控制

1.spring中基于注解的声明式事物配置步骤

1.配置事物管理器
2.开启spring对注解事物的支持< tx:annotation-driven>有个属性transaction-manager引用配置事物管理器transcationManager或者使用注解@EnableTransactionManagement
3.需要事物支持的地方使用@Transaction注解
只读型事物配置(配置service类上)
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
需要的是读写型事物配置(配置在方法上)
@Transactional(propagation = Propagation.REQUIRED,readOnly = false)

<!--开启spring对注解事物的支持-->
<tx:annotation-driven transaction-manager="transcationManager"></tx:annotation-driven>
<!--配置事物管理器-->
<bean id="transcationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>

总结:事物没有搞清楚,学习中、欢迎各位大佬指导,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值