`
jervis
  • 浏览: 22186 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Spring提供的Hibernate申明式事务管理有两种办法

阅读更多

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定义了所有的事务属性



分享到:
评论

相关推荐

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    Spring AOP(面向切面编程)提供了一种声明式的方式来管理事务,让开发者无需在代码中显式处理事务。以下是如何实现: 1. **配置事务管理器**: 在Spring配置文件中定义`PlatformTransactionManager`,如`...

    spring3,hibernate4 配置声明式事务管理(annotation方式)

    当我们需要在应用程序中进行事务管理时,Spring提供了一种声明式的方式,使得事务配置更为简洁。本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和...

    声明式事务控制spring+hibernate集成

    在IT行业中,尤其是在企业级应用开发中,声明式事务控制是一种常见的事务管理方式。它允许开发者通过配置,而不是代码来管理事务,使得事务处理更加简洁、易于维护。本主题聚焦于"声明式事务控制"在Spring 2.5与...

    spring hibernate 事务管理学习笔记(一)

    同时,Spring的事务管理机制是其核心功能之一,支持编程式和声明式两种方式,使得开发者可以方便地控制事务的边界。 其次,Hibernate是Java领域最流行的ORM(Object-Relational Mapping)框架,它简化了数据库操作...

    spring,hibernate整合实现事务管理(MethodInterceptor)

    在Spring与Hibernate的整合中,事务管理通常有两种方式:编程式和声明式。编程式事务管理需要开发者在代码中显式地控制事务的开始、提交和回滚,这种方式灵活但易于出错且不易维护。声明式事务管理则是通过配置来...

    Spring+Hibernate注解事务实例

    Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理通过注解或者XML配置实现,更为简洁且易于维护。 Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库操作,...

    spring mvc+hibernate实现事务管理(配置文件版)

    在本项目中,我们需要配置Spring的事务管理器,一般有两种方式:编程式事务管理和声明式事务管理。声明式事务管理更为常见,它通过在服务层的方法上添加@Transactional注解,由Spring自动进行事务的开启、提交或回滚...

    Spring与Hibernate集成---声明式事务

    集成的关键在于Spring的Transaction Management,它提供了声明式和编程式两种事务管理方式。声明式事务管理是通过在配置文件或注解中定义事务边界,无需在业务代码中显式处理事务开始、提交和回滚,更易于维护和管理...

    spring3hibernate4注解式事务管理

    总结来说,"spring3hibernate4注解式事务管理"是通过Spring的`@Transactional`注解实现事务边界,同时利用Hibernate 4的注解进行对象关系映射,从而简化了Java Web开发中的事务管理和持久层操作。这种组合方式提高了...

    Spring Hibernate事务实例

    在Java中,事务管理有编程式和声明式两种方式。编程式事务管理需要开发者手动编写事务开始、提交和回滚的代码,而声明式事务管理则通过配置来定义事务边界,更易于维护和使用。 Spring的`TransactionInterceptor`是...

    spring整合hibernate实现事务处理

    在分布式系统中,事务管理尤为关键,Spring框架提供了强大的声明式事务管理功能,能够简化开发者的工作。 1. **Spring整合Hibernate实现事务处理 - 注解方式** 在Spring中,我们通常使用`@Transactional`注解来...

    Spring+Hibernate 声明式事务

    本资源主要是结合博文 Spring+Hibernate: 声明式事务 http://blog.csdn.net/ManagementAndJava/article/details/78050519 的源代码,主要是讲解了spring4.3和hibernate5.2.11集成实现原理;

    spring hibernate 事务管理学习笔记(二)

    首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编程的方式来控制事务的开始、提交、回滚等操作,通常使用`TransactionTemplate`或直接调用`...

    spring hibernate,spring jdbc事务管理

    两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...

    spring3、 hibernate4 配置声明式事务管理(annotation方式)

    Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式地调用开始、提交、回滚等事务操作,而声明式事务管理则是通过配置或注解来定义事务边界,更加简洁且易于维护。 1....

    Spring与Hibernate集成

    5. **事务管理**: Spring提供了声明式事务管理,可以在配置文件中定义事务管理器,并在需要事务控制的方法上添加`@Transactional`注解。这样,Spring会自动处理事务的开始、提交或回滚。 6. **测试和运行**: 最后,...

    spring3.0两种事务管理配置

    Spring 3.0 事务管理配置 ...Spring 3.0 的事务管理配置提供了两种方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都可以实现事务管理的目标,但它们有不同的配置方式和优缺点。

    在Spring中配置Hibernate事务

    首先,我们需要理解Spring事务管理的两种基本模式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式调用开始、提交、回滚等事务操作,而声明式事务管理则通过在XML或注解中声明事务边界,让Spring...

Global site tag (gtag.js) - Google Analytics