`

spring配置事物的几种方法

阅读更多
方法一:
----------------------------------------------------------------------------------

<bean name="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
</bean>
<bean name="transactionProxyTemplate" abstract="true"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
<property name="target">
    <list>
    <ref bean="classService" /><!-- 要配置事物的Service或者DAO都配置到这里就OK了 -->
    <ref bean="userService" />
    </list>
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="modify*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
     <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
   </property>
</bean>

第二种方法:
----------------------------------------------------------------------------------

<bean name="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
</bean>
<bean name="transactionProxyTemplate" abstract="true"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="modify*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
     <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
   </property>
</bean>

<bean name="classService" abstract="false" singleton="true"
   lazy-init="default" autowire="default" dependency-check="default"
  parent="transactionProxyTemplate"><!-- 哪个Service需要事物就配一个这样的Bean -->
   <property name="target">
   <bean class="su.service.impl.ClassServiceImpl">
     <property name="classDao">
      <ref bean="classDao" />
     </property>
    </bean>
   </property>
</bean>


方法三:
----------------------------------------------------------------------------------

为每一个需要事物的DAO配置一个代理Bean
<bean id="deptsortDAOProxy"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
   <property name="target">
   <ref bean="deptsortDAO" />
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
   </property>
</bean>

Service配置的时候直接引用配置好的代理DAO

<bean id="deptsortService"
   class="com.oa.service.DeptsortServiceImpl">
   <property name="deptsortDAO">
    <ref bean="deptsortDAOProxy" />
   </property>
</bean>

 

分享到:
评论

相关推荐

    spring中事物配置

    Spring提供了几种事务通知类型,如`@Transactional`注解、`tx:advice`元素等。在XML配置中,我们可以使用`&lt;tx:advice&gt;`元素来定义一个事务通知: ```xml *" propagation="REQUIRED"/&gt; ``` 这里,`*`表示...

    spring2.5参考手册

    在Spring 2.5版本中,主要包含了以下几个关键知识点: 1. **依赖注入**:这是Spring的核心特性之一。通过DI,Spring容器管理对象的生命周期和对象之间的关系,而不是由对象自己来管理。这减少了代码间的耦合度,...

    java JSP开发之Spring中Bean的使用

    Spring中的Bean代表着应用中的对象,这些对象由Spring容器管理,提供了一种松耦合和依赖注入的机制。在本文中,我们将深入探讨Spring中Bean的生命周期以及如何创建和配置可被发现的Bean。 首先,让我们理解Spring中...

    CGB_面试题_第三阶段(1).docx

    Spring 框架是一种基于 Java 的开源框架,提供了一个灵活、强大和可扩展的基础结构,用于构建企业级应用程序。下面是 Spring 框架中的一些关键概念和技术要点: 1. Spring Bean 容器 Spring Bean 容器是 Spring ...

    ssh2项目 实现登陆,crud操作,用aop控制事物

    - **依赖注入(DI)**:Spring可以通过XML配置或注解方式管理Bean,实现对象间的依赖关系。 - **事务管理**:Spring提供了声明式事务管理,可以通过AOP实现。在CRUD操作中,Spring能够确保数据的一致性,当出现异常...

    java面试题

    多线程几种实现方法,同步? 答:多线程有两种实现方法,一种是继承Thread类或者实现Runnable接口。同步就是在方法返回类型后面加上synchronized。 c#中的委托,事件是不是委托? 答:委托就是将方法作为一个参数...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】Java 中定义常量的几种方法 25 【基础】什么时候使用字节流?什么时候用字符流? 26 【基础】GBK与UTF-8的区别 26 【基础】static、final、const的区别 26 final: 26 static: 27 【基础】如何实现对象克隆?...

    值得收藏的2017年Java开发岗位面试题

    7. spring注入的几种方式(循环注入)。 Spring提供了多种注入方式,例如 setter注入、构造器注入和字段注入等。 8. spring如何实现事物管理的。 Spring提供了多种事务管理机制,例如使用@Transactional注解或使用...

    java 语言与 面向对象 程序设计题解及实验指导

    13. **注解(Annotation)**:注解为编译器和运行时提供元数据,简化了代码配置,例如Spring框架中的@Autowired等。 在《java语言与面向对象程序设计题解及实验指导》中,你将找到关于以上知识点的详细解释、实例...

    北京出版社XML实用教程程序

    7. 实际应用:XML在各种领域都有应用,如Web服务(SOAP)、配置文件(如Spring框架)、数据交换(RSS、Atom)、文档存储(Office Open XML)等。 8. 实战练习:一个XML实用教程可能会包含编写XML文档、验证XML、...

    SpringBoot 注解事务声明式事务的方式

    springboot使用上述注解的几种方式开启事物,可以达到和xml中声明的同样效果,但是却告别了xml,使你的代码远离配置文件。今天就扒一扒springboot中事务使用注解的玩法,感兴趣的朋友一起看看吧

    支持多数据库的ORM框架ef-orm.zip

    事实上JPA的几种数据查询方式存在青黄不接的问题。选择查询语言xxQL,项目面临后续维护困难,跨数据库移植性差;选择Criteria API,代码臃肿,操作繁琐,很多人望而却步。EF的设计思想是使人早日摆脱拼装SQL/HQL/...

Global site tag (gtag.js) - Google Analytics