事务
1.什么是事务?
事务是我们要执行的一系列操作,要么完全执行,要么完全不执行。这样可以确保所有的操作都成功,否者不会跟新数据库。
2.事务有两种结果:
所有的操作执行成功,提交事务。如果有一个操作执行失败,将发生回滚,撤销之前到事务发生开始时执行的操作。
3.spring的事务使用:
有两个类DataSourceTransactionManager,DefaultTransactionDefinition
执行过程:开启事务-》执行操作-》如果执行成功提交事务,如果发生异常就回滚事务。
spring的具体代码:
/** * * @author junwei.ou * 任务管理 * */ public class ScoreTask { @Resource private DataSourceTransactionManager transactionMapper; @Resource private DefaultTransactionDefinition transactionDefinition; public void update(Map<?,?> resData){ TransactionStatus status = transactionMapper.getTransaction(transactionDefinition); String dd =(String)resData.get("accNo"); String orderid = (String)resData.get("orderId"); String acco[]=ScoreConstant.GET_ACCNO(); if(dd.equals(acco[0])){ OrderTrade2 trade = orderTradeService.getOrderTradeBySeriNum(orderid); //根据订单号查询订单 String[] ratio = ScoreConstant.SCORE_DOUBLE_RATIO(); int score = (int)( Double.parseDouble(ratio[0])*trade.getRealPay()); //应增加的双倍积分 User2Example ex = new User2Example(); ex.createCriteria().andOpenIdEqualTo(trade.getOpenId()); //根据OpenId得到用户信息 List<User2> user2List = user2Mapper.selectByExample(ex); User2 user = user2List.get(0); int ss = user.getScore()==null?0:user.getScore(); user.setScore(score+ss); //更新用户信息 try { user2Mapper.updateByOpenId(user); trade.setState(1); // orderTradeService.updateById2(trade); //跟新订单信息 orderTrade2Mapper.updateByPrimaryKey(trade); //双倍积分记录 UserScore userScore= new UserScore(); userScore.setOpenId(trade.getOpenId()); userScore.setScoreNumber(score); userScore.setScoreDescrible("联名卡双倍积分 订单编号"+trade.getOrderSerioNum()); userScore.setCreateTime(new Date()); userScore.setScoreTyple(2); int number=userScoreMapper.insert(userScore); System.out.println(number); transactionManager.commit(status); //提交事务并跟新数据库 } catch (Exception e) { e.printStackTrace(); transactionManager.rollback(status);//发生异常时回滚事务 } } } }注意:一定不能缺少下面这句代码transactionMapper.commit(status);
spring的事务配置的方法。
spring配置文件中有三种组成:其中有DataSource、TransactionManager和代理机制这三部分
相关推荐
Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...
本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理、编译工具以及与数据库交互的相关jar包。下面将对这些知识点进行详细解释: 1. **Spring框架*...
### Spring事务管理详解 #### 一、Spring事务管理概述 Spring框架提供了强大的事务管理功能,使得开发者能够更方便地管理应用程序中的事务。Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 -...
Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。
Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型
Synchronized锁在Spring事务管理下,导致线程不安全。
本篇将深入探讨Spring事务管理的核心概念、工作原理以及如何使用`spring-tx-3.2.0.RELEASE.jar`这个jar包。 首先,我们需要理解什么是事务。在数据库系统中,事务是一组操作,这些操作被视为一个整体,要么全部完成...
标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...
本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...
本文将详细介绍Spring事务管理的四种方式:编程式事务管理、声明式事务管理、PlatformTransactionManager接口以及TransactionTemplate。 1. **编程式事务管理**:这是一种手动控制事务的方式,通过在代码中调用`...
### Spring事务管理详解 #### 一、Spring事务管理的重要性及必要性 在现代软件开发中,事务管理是一项至关重要的技术,特别是在涉及数据库操作时。事务能够确保一系列操作要么全部成功,要么全部失败,这对于保持...
Spring事务管理是Spring框架的核心特性之一,它提供了一种强大且灵活的方式来管理应用程序中的事务边界。在企业级Java应用中,事务处理是确保数据一致性、完整性和可靠性的关键部分。本篇文章将深入探讨Spring的事务...
总的来说,Spring事务管理提供了一种灵活、强大的方式来处理应用程序中的事务,无论是在简单还是复杂的事务场景下,都能有效保证数据的一致性和完整性。通过声明式事务管理,开发者可以将关注点从事务细节中解脱出来...
Spring事务管理是Spring框架的核心特性之一,它提供了一种在Java应用中管理和协调数据库事务的标准方式。对于有Java基础的开发者来说,理解并掌握Spring事务管理至关重要,因为这有助于确保数据的一致性和完整性,...
当出现像描述中那样的问题——SQL语句执行出错但事务未回滚时,我们需要深入理解Spring事务管理的配置和机制。以下是一些关键知识点: 1. **Spring事务管理类型**: - **编程式事务管理**:通过`...
spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...
在思维导图"Spring Transaction.twd"中,可能包含了Spring事务管理的各个概念和它们之间的关系,如事务的ACID属性(原子性、一致性、隔离性和持久性),事务管理器,以及声明式和编程式事务管理的实现方式。...
### Spring事务管理的方法 #### 一、引言 在企业级应用开发中,事务管理是一项至关重要的技术。Spring框架作为Java领域中一个非常流行的轻量级框架,为开发者提供了多种方式来实现事务管理,其中主要分为编程式...
Spring事务管理确保每个事务都是独立的,防止了脏读、不可重复读和幻读等问题。脏读是指事务T1读取了事务T2未提交的修改;不可重复读是指事务T1在不同时间读取同一数据时得到不同结果,因为T2在这期间做了修改;幻读...