今天有同事问一个j2ee事务的问题,做个小的总结:
1、基于注解的事务
在类和方法上配置类似
@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
代码的
2、基于配置文件的事务
在xml文件配置类似
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="remove*" propagation="REQUIRED"/>
<tx:method name="clean*" propagation="REQUIRED"/>
<tx:method name="batch*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution( * org.crazystone.car.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
</aop:config>
配置的
3、硬编码的事务
这种也是我同事需要的那种,希望硬编码控制的类似
/**
* CardRecordService.java
* org.crazystone.car.service
*
* Function: TODO
*
* ver date author
* ──────────────────────────────────
* 2012-8-30 zhangzenglun
*
* Copyright (c) 2012, TNT All Rights Reserved.
*/
package org.crazystone.car.service;
import org.crazystone.car.dao.CarRecordDAO;
import org.crazystone.car.util.model.CarRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
/**
* ClassName:CardRecordService
*
* @author zhangzenglun
* @version 1.0
* @since v1.0
* @Date 2012-8-30 下午6:37:38
*/
@Service
public class CardRecordService {
@Autowired
CarRecordDAO carRecordDAO;
@Autowired
PlatformTransactionManager transactionManager;
public void batchSave() {
//DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
TransactionStatus transactionStatus = transactionManager.getTransaction(null);
try {
CarRecord record = null;
//record = new CarRecord();
record.setCarid("131");
record.setCartype("d");
record.setCollectionAuthority("d");
record.setDealSign("");
this.carRecordDAO.insertNoPk(record);
record = new CarRecord();
record.setCarid("121");
record.setCartype("d");
record.setCollectionAuthority("d");
record.setDealSign("");
this.carRecordDAO.insertNoPk(record);
transactionManager.commit(transactionStatus);
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(transactionStatus);
}
}
public void batchSave2() {
//DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
TransactionStatus globalTransactionStatus = transactionManager.getTransaction(null);
try {
CarRecord record = null;
record = new CarRecord();
record.setCarid("131");
record.setCartype("d");
record.setCollectionAuthority("d");
record.setDealSign("");
this.carRecordDAO.insertNoPk(record);
TransactionStatus localTransactionStatus = transactionManager
.getTransaction(null);
record = new CarRecord();
record = null;
record.setCarid("121");
record.setCartype("d");
record.setCollectionAuthority("d");
record.setDealSign("");
this.carRecordDAO.insertNoPk(record);
transactionManager.commit(localTransactionStatus);
transactionManager.commit(globalTransactionStatus);
} catch (Exception e) {
transactionManager.rollback(globalTransactionStatus);
}
}
}
这种代码的
分享到:
相关推荐
在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理应用中的事务。Spring事务管理的目的是确保数据的一致性和完整性,...这样可以帮助你更好地理解Spring事务管理的工作原理和实际应用。
Spring事务管理创造性的解决了很多以前要用重量级的应用服务器才能解决的事务问题,那么其实现原理一定很深奥吧?可是如果读者仔细研究了Spring事务管理的代码以后就会发现,事务管理其实也是如此简单的事情。这也...
### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...
Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...
Spring事务管理是Spring框架的核心特性之一,主要...无论选择哪种方式,Spring事务管理都能帮助我们在复杂的应用场景下保证数据的一致性和完整性。在实际开发中,可以根据项目需求和团队习惯来选择合适的事务管理策略。
### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...
2. **Spring事务管理**:Spring提供了两种事务管理方式,即编程式事务管理和声明式事务管理。编程式事务管理通过TransactionTemplate或直接调用PlatformTransactionManager接口的方法来管理事务,而声明式事务管理则...
本主题将深入探讨“Spring事务案例分析.zip”中的关键知识点,包括Spring事务管理及其在实际项目中的应用。 首先,我们来了解什么是Spring事务管理。在分布式系统或数据库操作中,事务管理是确保数据一致性和完整性...
在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理事务。本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将...
Spring事务管理提供了统一的事务处理模型,使得开发者无需关注具体数据库访问技术的事务细节,简化了事务控制代码,提高了代码的可读性和可维护性。无论是使用注解还是AOP配置,都能有效地管理和协调事务,确保应用...
总结来说,"spring事务操作试验"涵盖了Spring框架中的事务管理基础,包括声明式和编程式事务,以及它们在JDBC操作中的应用。通过实验,读者可以更好地理解事务的生命周期、隔离级别和回滚规则,这些都是构建健壮、...
本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...
### Spring框架的事务管理及应用 #### Spring框架概述 Spring框架是一个开源项目,最早出现在2003年2月,其起源可以追溯到Rod Johnson在2002年末出版的书籍《Expert One-on-One J2EE Design and Development》中的...
Spring事务机制是Java开发中非常重要的一个概念,它在企业级应用中扮演着核心角色,确保数据的一致性和完整性。Spring提供了多种事务管理方式,包括编程式事务管理和声明式事务管理。在这篇DEMO中,我们将重点探讨...
首先,Spring事务管理是Spring框架的核心特性之一,它允许我们以声明式或编程式的方式管理事务。声明式事务管理通过配置元数据(如XML或注解)来定义事务边界,而编程式事务管理则是在代码中显式调用...
Spring事务管理分为编程式事务管理和声明式事务管理两种方式。编程式事务管理通过使用PlatformTransactionManager接口的begin、commit、rollback等方法直接控制事务的生命周期,这种方式灵活但容易导致代码过于繁琐...
在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。
在Spring框架中,事务管理是核心功能之一,它允许开发者以声明式或编程式的方式处理应用程序的事务。这里我们主要探讨的是"Spring基于XML方式配置事务",这涉及到Spring的事务管理器、事务属性以及如何在XML配置文件...
标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...