`
ariyue
  • 浏览: 342169 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

spring 事务管理(Transaction) 例子

阅读更多
    传统上, J2EE开发者有两种事务管理选择,全局和本地事务。Spring框架对事务管理的支持极大地改变传统上认为J2EE应用需要应用服务器。这种改变不单是仅仅为了通过EJB来使用生命式事务而使用应用服务器。事实上,即使你的应用服务器有强大的JTA功能,Spring框架的声明式事务提供了比EJB CMT(声明式事务)更强大,更高效的编程模型。一般来说,只有支持多个事务资源,才会需要应用服务器的JTA功能,而大多数应用不需要能够处理跨多种资源。最重要的一点,使用Spring,你可以选择何时把你的应用迁移到全功能的应用服务器。使用Spring不需要像以前一样用编码实现本地事务代替 EJB CMT或JTA,现在只需要改配置问价,而不必改代码。

一. Spring事务管理

  1. Spring 编程式事务管理(programmatic transaction management)
    

   DefaultTransactionDefinition def = new DefaultTransactionDefinition();







TransactionStatus status = transactionManager.getTransaction(def);







try {







JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);







jdbcTemplate.update("INSERT INTO USER VALUES('Spring008', 'caterpillar', 'M', 29)");







jdbcTemplate.update("INSERT INTO USER VALUES('Spring009', 'momor', 'F', 26)");







jdbcTemplate.update("INSERT INTO USER VALUES('Spring010, 'beckyday', 'F', 35)");















} catch (DataAccessException ex) {







transactionManager.rollback(status); // 也可以執行status.setRollbackOnly();







        throw ex;







}







transactionManager.commit(status);















见:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2398








  2. Spring宣告式事务管理(declarative transaction management)主要是在spring的配置文件中设置

   

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







<property name="transactionManager">







<ref bean="transactionManager"/>







</property>







<property name="target">







<ref bean="userDAO"/>







</property>







<property name="transactionAttributes">







<props>







<prop key="insert*">PROPAGATION_REQUIRED</prop>







</props>







</property>       







</bean>







见:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2402















二. Spring的@Transcation的例子















1. class 中















@Component //注释就可以将该类定义了 Spring 容器中的 Bean















public Class UserDaoImpl implements IUserDao {















@Override







//标志updateUsers()为Transactional    







@Transactional(







propagation = Propagation.REQUIRED,







isolation = Isolation.DEFAULT,







rollbackFor = Exception.class







)







public void updateUsers(List<User> users){







for(User user :users){







//逻辑







}















}







}















注意: 事务的属性和基本概念







Required : 如果在一个事务中调用,就将该方法加到此事务中,如果没有启动事务,就创建新事务







RequiredNew : 不管当前有没有事务,都启动新事务,如果有,会被挂起,直到此方法结束







NotSupported : 不能在事务中执行此方法,如果有事务,会被挂起,直到此方法结束 







Supports : 如果有当前事务,此方法回加到当前事务,如果没有,容器不会启动新事务







Mandatory : 必须在事务中执行此方法,否则会抛出异常 : TransactionRequiredException







Never : 必须不在事务中调用此方法,否则抛出RemoteException(远程调用)或EJBException(本地调用)

        2.spring配置文件加入:
           .....................
            <tx:annotation-driven/>
          .....................

      注意: webSerivces 是不支持事务的,如果使用事务,必须在下层的Object中实现,例如在Service层或者是Dao层实现。

另外:

http://www.ibm.com/developerworks/cn/java/j-ts1.html

http://www.javaworld.com.tw/confluence/display/opensrc/Spring

http://www.redsaga.com/spring_ref/2.0/html/transaction.html#transaction-declarative
分享到:
评论

相关推荐

    Spring 事务简单完整例子

    本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...

    Spring事务管理的jar包

    Spring事务管理分为编程式事务管理和声明式事务管理两种方式。编程式事务管理通过使用PlatformTransactionManager接口的begin、commit、rollback等方法直接控制事务的生命周期,这种方式灵活但容易导致代码过于繁琐...

    Spring的事务管理小案例

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

    Spring事务例子

    通过运行这些例子,你将对Spring事务管理有更深入的理解,知道何时选择编程式还是声明式事务,以及如何有效地处理事务异常。 总之,Spring的事务管理是其强大功能的一部分,无论是编程式还是声明式,都能帮助开发者...

    spring事务管理.rar

    《Spring事务管理详解》 在Java企业级应用开发中,数据一致性是至关重要的,而Spring框架的事务管理机制就是为了解决这个问题。本教程将深入探讨Spring中的事务管理,包括其核心概念、配置方式以及实战应用。 首先...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    在Spring框架中,事务管理是核心特性之一,用于确保数据操作的一致性和完整性。当一个方法(A方法)内部调用另一个方法(B方法)时,可能会遇到事务控制...这个示例代码对于理解和调试Spring事务管理的问题非常有帮助。

    spring学习笔记(十六)-声明式事务的例子

    对于“test_hebenate_2”这个文件名,可能指的是测试Hibernate(一个流行的ORM框架)与Spring集成时的事务管理例子。在这样的场景下,通常会结合Spring的声明式事务管理与Hibernate的Session进行交互,确保数据操作...

    Spring事务管理的方法

    ### Spring事务管理的方法 #### 一、引言 在企业级应用开发中,事务管理是一项至关重要的技术。Spring框架作为Java领域中一个非常流行的轻量级框架,为开发者提供了多种方式来实现事务管理,其中主要分为编程式...

    Spring2.5实现事务管理(本地事务、分布式事务).doc

    在 Spring 2.5 中,可以使用 JTA(Java Transaction API)来实现分布式事务管理。 JTA 是一个 Java 标准,用于提供分布式事务管理的支持。它可以使得事务跨越多个资源管理器,确保事务的一致性。 在 Spring 2.5 中...

    spring学习笔记(十五)-编程式事务例子

    标签“源码”提示我们可能会涉及Spring事务管理的底层实现。在Spring框架中,事务管理器会利用AOP代理来织入事务控制代码。当使用JDBC时,Spring会通过Connection的setAutoCommit(false)方法开启手动事务,并在适当...

    spring事务,xml方式和注解方式

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在多线程、分布式系统中,事务管理显得尤为重要。本节将详细介绍Spring如何通过XML配置和注解方式来实现事务管理。 首先,...

    spring事务配置的五种方式

    ### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...

    spring事务配置的5中方式

    Spring 事务配置是Spring框架中不可或缺的一部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager和代理机制。...

    Spring事务管理.docx

    ing.jdbc.datasource.DataSourceTransactionManager"&gt; &lt;property name="dataSource" ref="dataSource" /&gt;&lt;/bean&gt;&lt;tx:annotation-driven transaction-manager="transactionManager" /&gt;在 Spring 中,声明式事务管理是...

    10-Spring-事务管理1

    6. **Spring事务回滚机制** 默认情况下,Spring通过捕获并处理运行时异常(尤其是`RuntimeException`的子类)来决定是否回滚事务。如果抛出了受检查的异常(`Exception`的非运行时子类),事务通常不会自动回滚,...

    spring事务

    Spring事务管理是Java开发中非常重要的一个环节,尤其是在基于SSH(Spring、Struts、Hibernate)框架的大型企业级应用中。SSH框架集成了Spring的事务管理能力,使得开发者能够更方便地处理数据操作中的事务性问题。...

    spring 事务代理配置

    ### Spring事务管理——声明式事务配置详解 #### 引言 在现代的Java企业级应用开发中,事务处理是确保数据一致性和完整性的重要机制。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务管理方式。...

    Spring中的事务管理

    Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。本篇文章将重点探讨基于注解和XML配置的声明式事务管理。 ### 声明式事务管理 声明式事务管理是Spring中非常受欢迎的特性,因为它允许...

Global site tag (gtag.js) - Google Analytics