`
explore
  • 浏览: 78402 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

事务基本概念

    博客分类:
  • J2EE
阅读更多

 

转自:

 http://dev.firnow.com/course/7_databases/database_other/200855/113472.html

 http://longdechuanren.iteye.com/blog/646497

 

 

1. ACID

     原子性(Atomicity):保证事务中的所有操作全部执行或全部不执行。例如执行转账事务,要么转账成功,要么失败。成功,则金额从转出帐户转入到目的帐户,并且两个帐户金额将发生相应的变化;失败,则两个账户的金额都不变。不会出现转出帐户扣了钱,而目的帐户没有收到钱的情况

     一致性(Consistency):保证数据库始终保持数据的一致性——事务操作之前是一致的,事务操作之后也是一致的,不管事务成功与否。如上面的例子,转账之前和之后数据库都保持数据上的一致性,即:在事务提交前或后,所有用select查出来的数据都是一样的。

     隔离型(Isolation):多个事务并发执行的话,结果应该与多个事务串行执行效果是一样的。显然最简单的隔离就是将所有事务都串行执行:先来先执行,一个事务执行完了才允许执行下一个。但这样数据库的效率低下,如:两个不同的事务只是读取同一批数据,这样完全可以并发进行。为了控制并发执行的效果就有了不同的隔离级别。

      持久性(Durability):持久性表示事物操作完成之后,对数据库的影响是持久的,即使数据库因故障而受到破坏,数据库也应该能够恢复。通常的实现方式是采用日志

 

2. 事务的传播机制

   在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层,当我们调Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中。在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。
   如果你的Service层的某个方法除了调用了Dao层的方法D之外,还调用了本类的其他的Service方法S,那么在调用S的时候,这个事务是怎么规定的呢,我必须保证我在我方法里调用的S与D处在同一个事务中,否则如何能保证事物的一致性。事务的传播特性就是解决这个问题的。“事务是会传播的”,在Spring中有针对传播特性的多种配置我们大多数情况下只用其中的一种:PROPGATION_REQUIRED:这个配置项的意思是说当我调用service层的方法的时候开启一个事务(具体调用那一层的方法开始创建事务,要看你的aop的配置),那么在调用这个service层里面的其他的方法的时候,如果当前方法产生了事务就用当前方法产生的事务,否则就创建一个新的事务。这个工作使由Spring来帮助我们完成的。
   以前没有Spring帮助我们完成事务的时候我们必须自己手动的控制事务,例如当我们项目中仅仅使用hibernate,而没有集成进spring的时候,我们在一个service层中调用其他的业务逻辑方法,为了保证事物必须也要把当前的hibernate session传递到下一个方法中,或者采用ThreadLocal的方法,将session传递给下一个方法,其实都是一个目的。现在这个工作由spring来帮助我们完成,就可以让我们更加的专注于我们的业务逻辑。而不用去关心事务的问题。

   默认情况下当发生RuntimeException的情况下,事务才会回滚,所以要注意一下 如果你在程序发生错误的情况下,有自己的异常处理机制定义自己的Exception,必须从RuntimeException类继承 这样事务才会回滚!

 

 

分享到:
评论

相关推荐

    微服务架构的分布式事务控制及解决方案视频教程

    1.事务基本概念讲解(本地、分布式) 2.分布式事务理论(CAP、BASE) 3.分布式事务解决方案之2PC(xa、seata) 4.分布式事务解决方案之TCC(hmily) 5.分布式事务解决方案之可靠消息最终一致性 6.分布式事务解决方案...

    事务处理:概念与技术

    作者使用事务作为基本概念,说明了在有限的资金和风险下如何构建高性能的高可用性应用。书中还详细阐述了各种可能发生的问题,以及解决这些问题的实际可用的技术。  本书列举了大量成功的商业和研究系统的实例,...

    分布式事务实战(二) -事务基本概念

    1 什么是事务 一种可靠、一致的方式,访问和操作数据库中数据的程序单元。 2 ACID性质 并非任意的对数据库的操作序列都是数据库事务。数据库事务拥有以下四个特性,习惯上被称之为ACID特性。 原子性(Atomicity):...

    事务的概念

    事务的基本概念和在不同环境下如何使用事务。

    Spring Boot数据库事务控制.pptx

    1.问题引入 2.事务基本概念、特性 3.事务并发引起问题,隔离级别 4.Springboot事务控制

    事务处理概念与技术

    资源名称:事务处理 概念与技术内容简介: 列举了大量成功的商业和研究系统的实例,此外,列出了许多事务处理算法的可编译的...作者使用事务作为基本概念, 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    MySQL数据库:数据处理的基本概念.pptx

    数据处理的基本概念;数据处理的基本概念;数据处理的基本概念;数据处理的基本概念;数据处理的基本概念;对客观事务及其活动的抽象符号表示,是存储在某一种媒体上可以鉴别的符号资料。? 例如:学生的考试成绩85和59。 ...

    第八讲-分布式事务原理及应用.pdf

    事务的基本概念-ACID 2 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性: 原子性、一致性、隔离性、持久性。这...

    MySQL 事务概念与用法深入详解

    主要介绍了MySQL 事务概念与用法,结合实例形式深入分析了MySQL 事务基本概念、原理、用法及操作注意事项,需要的朋友可以参考下

    数据库的连接池原理,基本概念及原理,服务器自带的连接池

    数据库的连接池原理的讲解 基本概念及原理 服务器自带的连接池 并发问题 多数据库服务器和多用户 事务处理 连接池的分配与释放 连接池的配置与维护

    SIP协议原理基本概念

    详细讲解SIP协议原理基本概念,几个基本概念:UAC、UAS、对话、事务、URI、头域,对话:SIP消息中哪些内容决定一个对话,事务:请求是否一定有响应?一个请求是否只能有一个响应?URI:常见的URI有哪几种

    ERP/MES基本概念及名词术语提炼总结

    关于ERP、MES名词概念的总结:ERP:企业资源管理计划Enterprise Resource Planning是对整个企业的资源进行计划和各种管理活动的集成应的联机事务处理系统,是企业信息的集成框架。  MES:制造执行系统...

    数据库的事务处理和并发控制

    事务是一个逻辑工作单元,SQL Server 2005 提供了几种...本章主要介绍 SQL Server 2005数据库系统的事务和锁的基本概念,事务、批、锁的创建和使用,通过事务、批、锁监测系统和优化物理数据库的操作,以及作业的设置。

    计算机的基本概念.pdf

    计算机的基本概念 什么是计算机? 计算机是一种能够按照事先存储的程序,自动、高速地对数据进行输入、处理、输出和存 储的系统。 计算机能够完成的基本操作及其主要功能: 输入:接受由输入设备(如键盘、鼠标器、...

    mysql面试题-mysql经典面试题目-数据库的基本概念-SQL语法-事务处理-索引优化-性能调优-mysql-面试题目

    MySQL如何支持事务处理? 什么是主键和外键?它们之间有什么区别? 什么是数据库范式?列举一些常见的数据库范式。 什么是数据库连接池?为什么使用连接池可以提高数据库访问性能? 什么是数据库事务隔离级别?...

    数据库系统概念 英文版 原书第6版

    本书是经典的数据库系统教科书《Database SystemConcepts》的最新修订版,全面介绍数据库系统的各种知识,透彻阐释数据库管理的基本概念。本书内容丰富,不仅讨论了关系数据模型和关系语言、数据库设计过程、关系...

    数据库系统概念中文版

    《数据库系统概念》是经典的数据库系统教科书《DatabaseSystemConcepts》的最新修订版 全面介绍数据库系统的各种知识 透彻阐释数据库管理的基本概念 《数据库系统概念 原书 第6版 》内容丰富 不仅讨论了关系数据模型...

    Java中各种事务管理技术的总结

    内容包括事务及其控制的基本概念,Oracle中的事务处理,以及JDBC,EJB,JTA事务管理内容的总结,最后还介绍了事务管理的技巧,是了解和学习JAVA事务处理不可多得的第一手资料!

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

    全面分析_Spring_的编程式事务管理及声明...您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。本文将直接使用这些概念而不做详细解释。另外,您最好掌握数据库的基础知识,虽然这不是必须。

Global site tag (gtag.js) - Google Analytics