Spring提供的Hibernate申明式事务管理有两种办法
a) 配合使用org.springframework.transaction.interceptor.TransactionInterceptor和org.springframework.orm.hibernate.HibernateTransactionManager,下面是spring reference的例子
代码: |
<beans> ... <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="transactionAttributeSource"> <value> product.ProductService.increasePrice*=PROPAGATION_REQUIRED product.ProductService.someOtherBusinessMethod=PROPAGATION_MANDATORY </value> </property> </bean> <bean id="myProductServiceTarget" class="product.ProductServiceImpl"> <property name="productDao"> <ref bean="myProductDao"/> </property> </bean> <bean id="myProductService" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>product.ProductService</value> </property> <property name="target"> <ref local="myProductServiceTarget<"/> </property> <property name="interceptorNames"> <list> <value>myTransactionInterceptor</value> </list> </property> </bean> </beans> |
HibernateInterceptor和事务无关,它的用途在javadocs中描述如下:
引用: |
This interceptor binds a new Hibernate Session to the thread before a method call, closing and removing it afterwards in case of any method outcome. If there already was a pre-bound Session (e.g. from HibernateTransactionManager, or from a surrounding Hibernate-intercepted method), the interceptor simply takes part in it. |
b)使用TransactionProxyFactoryBean,下面是Spring Reference中的例子
代码: |
<beans> ... <bean id="myTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductServiceTarget" class="product.ProductServiceImpl"> <property name="productDao"> <ref bean="myProductDao"/> </property> </bean> <bean id="myProductService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="target"> <ref bean="myProductServiceTarget"/> </property> <property name="transactionAttributes"> <props> <prop key="increasePrice*">PROPAGATION_REQUIRED</prop> <prop key="someOtherBusinessMethod">PROPAGATION_MANDATORY</prop> </props> </property> </bean> </beans> |
在没有其他AOP interceptor情况下,使用TransactionProxyFactoryBean是比较方便的。
事务划分一般是的业务层,而不是在DAO一层。
2.代理工厂返回的是接口AddressDao的应用,通过接口最终调用target的方法。
3.TransactionDefinition定义了所有的事务属性
分享到:
相关推荐
Spring AOP(面向切面编程)提供了一种声明式的方式来管理事务,让开发者无需在代码中显式处理事务。以下是如何实现: 1. **配置事务管理器**: 在Spring配置文件中定义`PlatformTransactionManager`,如`...
当我们需要在应用程序中进行事务管理时,Spring提供了一种声明式的方式,使得事务配置更为简洁。本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和...
在IT行业中,尤其是在企业级应用开发中,声明式事务控制是一种常见的事务管理方式。它允许开发者通过配置,而不是代码来管理事务,使得事务处理更加简洁、易于维护。本主题聚焦于"声明式事务控制"在Spring 2.5与...
同时,Spring的事务管理机制是其核心功能之一,支持编程式和声明式两种方式,使得开发者可以方便地控制事务的边界。 其次,Hibernate是Java领域最流行的ORM(Object-Relational Mapping)框架,它简化了数据库操作...
在Spring与Hibernate的整合中,事务管理通常有两种方式:编程式和声明式。编程式事务管理需要开发者在代码中显式地控制事务的开始、提交和回滚,这种方式灵活但易于出错且不易维护。声明式事务管理则是通过配置来...
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理通过注解或者XML配置实现,更为简洁且易于维护。 Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库操作,...
在本项目中,我们需要配置Spring的事务管理器,一般有两种方式:编程式事务管理和声明式事务管理。声明式事务管理更为常见,它通过在服务层的方法上添加@Transactional注解,由Spring自动进行事务的开启、提交或回滚...
集成的关键在于Spring的Transaction Management,它提供了声明式和编程式两种事务管理方式。声明式事务管理是通过在配置文件或注解中定义事务边界,无需在业务代码中显式处理事务开始、提交和回滚,更易于维护和管理...
总结来说,"spring3hibernate4注解式事务管理"是通过Spring的`@Transactional`注解实现事务边界,同时利用Hibernate 4的注解进行对象关系映射,从而简化了Java Web开发中的事务管理和持久层操作。这种组合方式提高了...
在Java中,事务管理有编程式和声明式两种方式。编程式事务管理需要开发者手动编写事务开始、提交和回滚的代码,而声明式事务管理则通过配置来定义事务边界,更易于维护和使用。 Spring的`TransactionInterceptor`是...
在分布式系统中,事务管理尤为关键,Spring框架提供了强大的声明式事务管理功能,能够简化开发者的工作。 1. **Spring整合Hibernate实现事务处理 - 注解方式** 在Spring中,我们通常使用`@Transactional`注解来...
本资源主要是结合博文 Spring+Hibernate: 声明式事务 http://blog.csdn.net/ManagementAndJava/article/details/78050519 的源代码,主要是讲解了spring4.3和hibernate5.2.11集成实现原理;
首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编程的方式来控制事务的开始、提交、回滚等操作,通常使用`TransactionTemplate`或直接调用`...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式地调用开始、提交、回滚等事务操作,而声明式事务管理则是通过配置或注解来定义事务边界,更加简洁且易于维护。 1....
5. **事务管理**: Spring提供了声明式事务管理,可以在配置文件中定义事务管理器,并在需要事务控制的方法上添加`@Transactional`注解。这样,Spring会自动处理事务的开始、提交或回滚。 6. **测试和运行**: 最后,...
Spring 3.0 事务管理配置 ...Spring 3.0 的事务管理配置提供了两种方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都可以实现事务管理的目标,但它们有不同的配置方式和优缺点。
首先,我们需要理解Spring事务管理的两种基本模式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式调用开始、提交、回滚等事务操作,而声明式事务管理则通过在XML或注解中声明事务边界,让Spring...