`
ruruhuang
  • 浏览: 193301 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring之事务管理

阅读更多

Spring之事务管理

EJB被人骂的够多了,除了SLSB(无状态SessionBean)CMT(Container-ManagedTransaction,容器管理事务)外,但是CMT依然需要以来ApplicationServerSpring提供了比CMT更加轻量的,好用易用的事务管理。

org.springframework.transaction.PlatformTransactionManager:是Spring事务管理的核心接口,正如类名,他分离了平台独立性。配合Springbeandefinition,他可以让我们在不同的事务平台上切换(jta->jdbc,etc)。

package org.springframework.transaction;
public interface PlatformTransactionManager {
  TransactionStatus getTransaction(TransactionDefinition definition)
      throws TransactionException;
  void commit(TransactionStatus status) throws TransactionException;
  void rollback(TransactionStatus status) throws TransactionException;

}

PlatformTransactionManager接口只有三个方法。Spring中使用AOP配合PlatformTransactionManager,可以使你感觉不到这个接口和他所依赖的类的存在。你需要做的只是在beandefinition中做写配置。你的代码不需要写一行关于事务的代码(特殊情况除外,如果你想在代码中控制事务的commitrollback)。当然你也可以使用编程式事务处理(这里不做介绍,可以参数Springdocument)


申明式事务管理

一种是使用AOPProxyFactoryBean TransactionInterceptor

<beans>

...

<beanid="mytxmanager"class="org.springframework.orm.hibernate.hibernatetransactionmanager">

<propertyname="sessionfactory" ref="mySessionFactory">

</bean>

<beanid="mytxinterceptor"< font="">

class="org.springframework.transaction.interceptor.TransactionInterceptor">

<propertyname="transactionmanager" ref="myTxManager">

<propertyname="transactionattributes">

<props>

<propkey="store*">PROPAGATION_REQUIRED</prop>

<propkey="create*">PROPAGATION_REQUIRED</prop>

<propkey="put*">PROPAGATION_REQUIRED</prop>

<propkey="*">PROPAGATION_REQUIRED,readOnly</prop>

</props>

</property>

</bean>

<beanid="myproductservicetarget"class="product.productserviceimpl">

<propertyname="productdao" ref="myProductDao">

</bean>

<beanid="myproductservice"class="org.springframework.aop.framework.proxyfactorybean">

<propertyname="proxyinterfaces">

<value>product.ProductService</value>

</property>

<propertyname="target" ref="myProductServiceTarget">

<propertyname="interceptornames">

<list>

<value>myTxInterceptor</value>

<value><!----></value>

</list>

</property>

</bean>

</beans>

这种配置更加灵活,你可以加更多的interceptorProductService中,如securityInterceptor.


二使用易用的,便利的TransactionProxyFactoryBean

<beans>

...

<beanid="mytxmanager"class="org.springframework.orm.hibernate.hibernatetransactionmanager">

<propertyname="sessionfactory" ref="mySessionFactory">

</bean>

<beanid="myproductservicetarget"class="product.productserviceimpl">

<propertyname="productdao" ref="myProductDao">

</bean>

<bean id="myProductService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<propertyname="transactionmanager" ref="myTxManager">

<propertyname="target" ref="myProductServiceTarget">

<propertyname="transactionattributes">

<props>

<propkey="store*">PROPAGATION_REQUIRED</prop>

<propkey="create*">PROPAGATION_REQUIRED</prop>

<propkey="put*">PROPAGATION_REQUIRED</prop>

<propkey="*">PROPAGATION_REQUIRED,readOnly</prop>

</props>

</property>

</bean>

</beans>

相比上面的代码,现在的代码少多了。我觉得Spring的类层次设计的非常合理,你可以使用其中的几个接口合并成另外一些大接口。如:ResourceBeanFactory

http://www.writely.com/View.aspx?docid=bdd75sqmr39x8

分享到:
评论

相关推荐

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。

    实验 spring 声明事务

    实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...

    Spring的事务管理小案例

    在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。

    spring3.0两种事务管理配置

    Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...

    spring事务管理5种方法

    本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...

    Spring事务管理开发必备jar包

    本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理、编译工具以及与数据库交互的相关jar包。下面将对这些知识点进行详细解释: 1. **Spring框架*...

    深入理解spring的事务管理机制

    Spring事务管理的核心是基于AOP(面向切面编程)来实现的。 **Spring事务的本质**实际上是依赖于底层数据库提供的事务支持。如果没有数据库层面的支持,Spring无法单独实现事务的功能。在传统的JDBC操作中,如果想...

    spring_事务管理(实例代码)

    Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...

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

    在实际开发中,理解这部分源码有助于我们更深入地掌握Spring事务管理的工作原理。 至于工具,开发者可以使用诸如IntelliJ IDEA这样的IDE,其中集成的调试工具可以帮助我们跟踪代码执行流程,查看事务状态的变化,...

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

    spring JDBC事务管理

    标题中的“Spring JDBC事务管理”是指在Spring框架中如何利用JDBC进行数据库操作时的事务控制。Spring提供了多种方式来管理事务,使得开发者能够在复杂的业务逻辑中更好地控制数据的持久化过程,确保数据的一致性和...

    spring 注解事务管理

    Spring事务管理主要分为两种方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编写代码来控制事务的开始、提交、回滚等操作,而声明式事务管理则是通过配置或注解来定义事务边界,更加直观和易于使用。 ...

    spring_如何管理事务的

    #### 一、Spring事务管理概述 Spring框架为开发者提供了一套强大的事务管理机制,它简化了应用程序中的事务控制逻辑,使得开发人员能够更加专注于业务逻辑的编写,而不是繁琐的事务管理代码。Spring支持两种类型的...

    Spring事务管理的jar包

    本篇将深入探讨Spring事务管理的核心概念、工作原理以及如何使用`spring-tx-3.2.0.RELEASE.jar`这个jar包。 首先,我们需要理解什么是事务。在数据库系统中,事务是一组操作,这些操作被视为一个整体,要么全部完成...

    Spring 框架的事务管理及应用

    ### Spring框架的事务管理及应用 #### Spring框架概述 Spring框架是一个开源项目,最早出现在2003年2月,其起源可以追溯到Rod Johnson在2002年末出版的书籍《Expert One-on-One J2EE Design and Development》中的...

    全面分析_Spring_的编程式事务管理及声明式事务管理

    Spring 框架的事务管理是其核心特性之一,它为开发者提供了强大的支持,确保了在多线程和并发环境中数据的一致性和完整性。本教程将深入探讨 Spring 的编程式事务管理和声明式事务管理,帮助你理解这两种方式的差异...

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

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    Spring事务管理失效原因汇总

    标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...

Global site tag (gtag.js) - Google Analytics