声明式事物

   声明式事务

事务是一组逻辑操作要么同时成功,要么同时失败.
声明式事务和编程式事务是spring对事物管理的两种类型,在事务管理上可以将事务写到bean中,精确控制事务的边界;也可以通过一个切面来声明,将事务放在一个上下环境变量中,只需用注解和XML配置来管理事务。

Spring对声明式事务的支持实际上是spring的aop框架的一个实现。Aop显然很适合来实现声明式事务管理,因为事务是系统级的服务,应该是在应用程序主功能的上面一层。你可以把spring的事务认作是包装了一个方法的切面。


Spring操作事务的API

PlatformTransactionManager:平台事务管理器.真正管理事务的对象.会在SpringJDBC或者Ibatis进行持久化数据时候使用.

TransactionDefinition:事务定义信息(隔离级别,传播行为,超时信息,是否只读)

TransactionStatus:事务的状态,记录事务的状态.

以下是通过xml文件进行事务的管理:
  
    
< beanid="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
         < propertyname="dataSource"ref="dataSource" />
     bean >


<tx:adviceid="txAdvice"transaction-manager="transactionManager">
<
tx:attributes>

<tx:methodname="transfer"propagation="REQUIRED"/>
tx:attributes>
tx:advice>

 
    
<tx:adviceid="txAdvice"transaction-manager="txManager">
        
        
<tx:attributes>

  
            <tx:methodname="add*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>
            <tx:methodname="save*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>
            <tx:methodname="insert*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>
            <tx:methodname="update*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>
            <tx:methodname="modify*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>
            <tx:methodname="delete*"propagation="REQUIRED"isolation="DEFAULT"
                       rollback-for="java.lang.Exception"
/>

            
            
<tx:methodname="query*"read-only="true"/>
            <tx:methodname="select*"read-only="true"/>
            <tx:methodname="find*"read-only="true"/>
        tx:attributes>
    tx:advice>
还可以通过注解来做Spring的声明式事务: 

1:配置事务管理器:

 <beanid="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <propertyname="dataSource"ref="dataSource"/>
    bean>

2:开启事务管你的注解:

  <tx:annotation-driverntransaction-manager="transactionManager"/>

3:在使用事务的类上添加一个注解:@Transactional即可  

Spring配置声明式事务如何实现?

是通过使用内置 TransactionProxyFactoryBean 为目标对象创建AOP代理对象,通过指定TransactionManager对目标对象的方法添加事务管理操作 .TransactionProxyFactoryBean参考一个方法的事务的属性来决定怎样管理那个方法上的事务策略。但是TransactionProxyFactoryBean从哪里得到一个方法的事务属性的呢。如你所见,TransactionProxyFactoryBean有一个transactionAttributeSourceproperty。这个property就代表着一个TransactionAttributeSource的实例。一个TransactionAttributeSource就是作为一个引用来查找设置在方法上的事务属性的。

欢迎阅读,要是哪里有误,还请路过的大神不吝赐教呀!

你可能感兴趣的:(java,ssh)