spring tx

  <!-- 

   事务管理

   在软件开发领域,全有或全无的操作被称为事务(transaction)。事务允许你将几个操作组合成一个要么全部发生要么全部不发生的工作单元。

   Spring支持编码方式和生命方式的事务。

   在软件中,事务确保了数据或资源免于处在不一致的状态。

   数据的ACID的4个特性:

   1.原子性(Atomic):事务是有一个或多个活动所组成的一个工作单元。原子性确保事务中的所有操作全部发生或者全部不发生。

   2.一致性(Consistent):一旦事务完成,系统必须确保它所建模的业务处于一致状态。

   3.隔离性(Isolated):事务允许多个用户对相同的数据进行操作。每个用户的操作不会与其他用户纠缠在一起。

   4.持久性(Durable):一旦事务完成,事务的结果 应该持久化。

   事务管理器:

   jdbc.datasource.DataSourceTransactionManager 用于spring对jdbc抽象的支持。也可用于使用iBATIS进行持久化的场景

   orm.hibernate3.HibernateTransactionManager   用于Hibernate3进行持久化。

    -->

    <!-- JDBC持久化使用DataSourceTransactionManager处理事务 -->

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource"/>

    </bean>

    <!-- Hibernate事务:HibernateTransactionManager -->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

    <!-- 

    Spring中,声明式事务是通过事务属性来定义的。

     -->

   <tx:advice id="txAdvice" transaction-manager="txManager">

   <tx:attributes>

   <tx:method name="save*" propagation="QEUEIRED"/>

   <tx:method name="*" propagation="SUPPORTS" read-only="true"/>

   </tx:attributes>

   </tx>

   <aop:config>

   <aop:advisor pointcut="execution(* *..SpitterService.*(..)))" advice-ref="txAdvice"/>

   </aop:config>

   <!-- 注解驱动的事务

   该定义会告诉Spring检查上下文中所有的bean并查找使用@Transactional注解的Bean,不管是在类级别还是在方法级别上。

   例如:

   @Transactional(propagation=Propagation.SUPPORTS, readOnly=true)

   public class SpitterServiceImple implements SpitterService{

   @Transactional(propagation=Propagation.REQUIRED, readOnly=false)

   public void addSpitter(Spitter spitter)

   }

   在类级别上使用注解,表示所有的方法都支持事务并且是只读的,在方法级别上,标识这个方法所需要事务的上下文。

    -->

   <tx:annotation-driver transaction-manager="txManager"/>

    

猜你喜欢

转载自alex-lip.iteye.com/blog/2175760
今日推荐