JavaEE中的事务管理——事务概述(1)

今天打算说一说事务管理,读者可能了解也有可能不了解,其实很简单(大牛请自行绕过)。本来想引用个成语的啥的来描述事务的特点,但是搜肠刮肚也没有发现合适的,于是就找了下面几组成语来描述事务性。其实在官方文档中对于事务的描述也是分四个方面来说的。这里算是用自己的理解解释一下罢了。

第一对词语是:“开弓没有回头箭”和“前功尽弃”(功亏一篑?功败垂成?)

这一对词语结合起来看就是事务的原子性,就是我们平时说的要做就做完,要不做就一点儿也不要做。其中前面的做完就是说明这个事务已经成功了,后面说的是在执行失败的时候需要回滚事务,也就是说保持原样不变(请参考接下来的特性——一致性)。

第二对词语是:“守口如瓶”和“表里如一”

这对词语结合起来看就是事务的一致性,意思就是一个事务结束后那么数据将是有效的,不是不可以理解的。话句话说这个特性是上一个特性的补充,做了一半不想做了,那对不起你得给我恢复原样,不能一部分数据更改了,另一部分没有更改。

第三对词语是:“事不关己高高挂起”和“各扫自家门前雪,莫管他人瓦上霜”

这对词语翻译成白话文就是“管我屁事”,这里表述了事务的另一个特性——隔离性。也就是说不同的事务之间是没有关系的,当事务提交之后其他的事务才能看到更改,否则对于外部的事务来说好似一个黑盒子,不知道里面在干什么。

第四对词语是:“尘埃落定”和“生米煮成熟饭”

这对词语的意思就是一切都已经完成,别想后悔了。映射到事务的特性里面就是持久性。一旦事务完成之后那么就意味着在事务中做出的更改将继续保持,当然后面另一个事务进行更改就是另一码事了。

官方文档上说满足以上四个特点的事务称之为ACID事务(其中A:atomicity,C:consistency,I:isolation,D:durability)。但是在满足ACID属性的时候人们考虑到性能问题会采取灵活的策略。比如数据的隔离级别问题,人们可以规定比之前更加宽松或者更加严格的规定。(具体可参照维基百科“事务隔离”词条。)人们这样规定是为了提升性能,或者是为了得到更加一致性的数据。

时间: 2024-11-03 01:38:55

JavaEE中的事务管理——事务概述(1)的相关文章

JavaEE中的事务管理——事务划界

前面博文中大致介绍了一下事务,其实在企业应用服务器中事务是在不同的级别上存在的.比较简单的事务是最底层的事务,就是位于资源级别的事务管理.假设数据最终要存储在一个关系型数据库中,那么最底层的事务就是位于这里.我们把这种事务称之为资源本地事务(resource-localtransaction)在不用容器的大部分情况下开发人员要面对的事务都属于这里(其他的事务面对不到是因为水平不够!).理解了数据的事务之后来解决资源本地事务就易如反掌了.如果使用了企业应用服务器那么要处理的大多数事务就是JavaT

JavaEE中的依赖性管理

无论你多么伟大你都不可能独立完成一项伟大的任务,JavaEE组件也是一样的,没有那个组件可以独立完成所有的任务.一个组件在工作的时候往往需要其他资源的帮助,那么在寻求帮助的过程中就涉及到这次我们要说的"依赖性管理"的问题.比如一个简单的会话bean它需要借用JDBC的数据源持久化数据,再比如一个消息驱动Bean需要往JMS消息队列中传递消息.这里都涉及到如何在组件中获取服务器中的资源的问题. 和现实生活中一样你需要火警.匪警疑惑120帮忙那么只需要拨打电话号码就可以了,但是前提是你首先

RabbitMQ发送端事务管理 —— 事务机制 和 确认机制

一.AMQP提供 事务机制,比较消耗性能 try { channel.txSelect(); channel.basicPublish(EXCHANGE_NAME, "queue22", true, MessageProperties.PERSISTENT_TEXT_PLAIN, msg.getBytes()); channel.addReturnListener(new ReturnListener() { public void handleReturn(int arg0, Str

spring+mybatis之声明式事务管理初识(小实例)

前几篇的文章都只是初步学习spring和mybatis框架,所写的实例也都非常简单,所进行的数据访问控制也都很简单,没有加入事务管理.这篇文章将初步接触事务管理. 1.事务管理 理解事务管理之前,先通过一个例子讲一下什么是事务管理:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元:如果银行卡扣钱失败但是ATM却出

spring笔记--事务管理之声明式事务

事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使用事务: 作为一个受欢迎的企业应用框架,Spring在不同的事务管理API上定义了一个抽象层,而开发时不必了解底层的事务管理API,就可以使用Spring的事务管理机制. Spring既支持编程式的事务管理,也支持声明式的事务管理,大多数情况我们选择后者. 编程式事务管理:将事务管理代码嵌入到业务代

Java数据库连接——JDBC调用存储过程,事务管理和高级应用

阅读目录 一.JDBC常用的API深入详解及存储过程的调用1.存储过程(Stored Procedure)的介绍2.JDBC调用无参存储过程3.JDBC调用含输入参数存储过程4.JDBC调用含输出参数存储过程二.JDBC的事务管理1.JDBC实现事务管理2.通过代码实现事物的管理三.数据库连接池(dbcp.c3p0)1.dbcp使用步骤2.c3p0使用步骤3.连接池总结四.JDBC的替代产品(Hibernate.Mybatis)1.Commons-dbutils 2.Hibernate简介3.M

[Spring框架]Spring 事务管理基础入门总结.

前言:在之前的博客中已经说过了数据库的事务, 不过那里面更多的是说明事务的一些锁机制, 今天来说一下Spring管理事务的一些基础知识. 之前的文章: [数据库事务与锁]详解一: 彻底理解数据库事务一, 什么是事务 事务是逻辑上一组操作,这组操作要么全都成功,要么全都失败. 事务的属性: ACID原子性(Atomicity): 事务作为一个整体被执行,包含在其中的对数据的操作要么全部被执行,要么都不执行.一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态.

Hibernate的事务管理

Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计师,必须了解事务并合理利用,以确保数据库保存正确.完整的数据.数据库向用户提供保存当前程序状态的方法,叫事务提交(commit):当事务执行过程中,使数据库忽略当前的状态并回到前面保存的状态的方法叫事务回滚(rollback). 1  事务的特性 事务具备原子性(Atomicity).一致性(Con

Spring整合JDBC以及AOP管理事务

本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象封装了JDBC技术,它可以操作数据库,这个对象可以放入Spring容器,交给Spring容器来管理.所以我们主要是要学习这个对象:JDBCTemplate.这个对象和DBUtils中的QueryRunner非常相似. 1. 导包 4+2+2(测试需要的包spring-test,新版本测试时还需要sp