还在学Hibernate,后续一大堆概念刚接触需要理解。觉得-——事务——这个概念不是很好理解,所以发上来记录一下。

首先说点千篇一律的东西。概念和特性都是随处可见的,无论哪里都很容易找到,关键是你如何去理解它。

概念:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

特性:事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
————————————————————————————————————————————————————————————————————————
为什么引入“事务”这个概念?
--->就像所有的文学,来自与生活,却又高于生活一样。事务的概念同样的来自于生活,引入“事务”肯定是为了解决某种问题,不然,谁愿意干这么无聊的事情呢?
现实里好比银行转账一样,当从一个帐户转出一部分钱之后,就必须在另一个帐户中存入相同数目的钱,若是转出钱之后,事务中止了,没有在另一个帐户中存钱,那么钱就不翼而飞了(事务的原子性),这事肯定是搁在谁身上都是不干的事情。而在软件中由于“事务”与数据库相关,在这个数字化时代,一切即数字,当然包括钱了。这么重要的东西一定得有所保障,既然“事务”能为它提供保障,那么引入它也是理所当然的。
 
如何理解事务的原子性?
--->原子性在最初在物理上解释为:不可再分割的。
可是在这里却感觉与物理上的理解有所不同,因为它把你随便一个事务都划分为原子性的,且它的原子性更偏向于结果的唯一性:要么成功,要么失败。
我们可知在Hibernate中由session.beginTransaction();语句我们可以自定义一个事务,而用session.endtransaction()来告诉该事务的结束,那么至于这两者之间的操作当然可以由你自己定义了。这个事务可大可小但是结果只有一个。
 
事务是否可以什么都不做?还是说一定要与数据库联系起来?
--->由事务的定义:“事务是访问并可能更新数据库中各种数据项的一个程序执行单元"可知,事务首先要实现对数据库的访问。这样来看,事务是不可能什么都不做的。因此事务的存在确实与数据库相关。
 
事务的一致性?
--->这个问题不是很好理解。一致性与原子性关系密切。
假如有一个产品表和一个产品明细表,是父子关系,当我们添加产品表的时候,一定要添加产品明细表的资料,如果我们只是添加了产品表没有添加产品明细,这样就会是数据不一致,混乱,这里我们就要用到事务了。
 
事务的隔离性?
--->这个比较好理解,若学过多线程的话就能理解多线程为什么要引入锁机制了。而同样为了解决事务的并发问题而引入的事务的隔离级别,数据库和应用程序都可以设置隔离级别。
 
事务的持久性?
--->假若你的事务是去银行存钱,那么你总不希望你刚刚提交完存钱请求之后(即事务已提交成功),由于突然的故障而让你的金钱“失联”吧!这就是事务的持久性。
这里有个问题,如果我的“事务”过程只是存钱,那么,根据以上的栗子,存钱完后——即事务已提交成功——那么是不是意味着事务已经完成了呢?那么后续的动作是不是就不是事务的范围之内了呢?存钱的事务完成,动作就传递给了数据库,那么于数据库的动作不再我刚刚那个“事务”当中呀!确实有待多了解。
 
事务与线程的同和异?
 
 
 
 
 

java事务理解的更多相关文章

  1. 转!!java事务的处理

    java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前 ...

  2. 深入Java事务的原理与应用

    一.什么是JAVA事务    通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 ( ...

  3. java事务的处理

    java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务. 如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先 ...

  4. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  5. java事务 深入Java事务的原理与应用

    一.什么是JAVA事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (iso ...

  6. java事务(三)

    java事务(三)——自己实现分布式事务 在上一篇<java事务(二)——本地事务>中已经提到了事务的类型,并对本地事务做了说明.而分布式事务是跨越多个数据源来对数据来进行访问和更新,在J ...

  7. java事务(一)

    Java中事务处理的基本方法与原理,包含以下文章: (一)Java事务处理的基本问题 (二)失败的案例 (三)丑陋的案例 (四)成功的案例(自己实现一个线程安全的TransactionManager) ...

  8. java事务(三)——自己实现分布式事务

    在上一篇<java事务(二)——本地事务>中已经提到了事务的类型,并对本地事务做了说明.而分布式事务是跨越多个数据源来对数据来进行访问和更新,在JAVA中是使用JTA(Java Trans ...

  9. 温故而知新java事务

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (iso ...

随机推荐

  1. Spring3系列12- Spring AOP AspectJ

    Spring3系列12- Spring AOP AspectJ 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代 ...

  2. Flash Media Server 4.5 序列号 (fms4.5 激活码)

    激活码一枚   ,网上找不到的..我今天放出来了哦... 1462-5864-7783-6034-8316-3718    (亲测 可用) 安装前找到系统盘下windows/system32/driv ...

  3. 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇

      1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...

  4. Flex Error #2156问题

    出现这个问题是因为应用程序使用了特殊端口,修改端口就可以解决. 特殊端口列表 A security change has been made in Adobe Flash Player 9.0.115 ...

  5. 七牛portal可用性测试记

    引言:2013年年底应七牛公司朋友的邀请,给他们的Portal进行可用性测试.七牛(http://www.qiniu.com/)一直专注于云存储基础服务,在业内颇有声誉.七牛云存储的后台选用并不常用的 ...

  6. R包介绍

    R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求,截至2013年3月6日,CRAN已经收录了各类包4338个. 一. R语言包的安装 ...

  7. AssetBundle系列——场景资源之解包(二)

    本篇接着上一篇继续和大家分享场景资源这一主题,主要包括两个方面: (1)加载场景 场景异步加载的代码比较简单,如下所示: private IEnumerator LoadLevelCoroutine( ...

  8. 菜鸟学Windows Phone 8开发(2)——了解XAML

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力 本文地址:http://channel9.m ...

  9. 关于Expression表达式树的拼接

    最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...

  10. 让服务器apache/iis/nginx支持.apk/ipa文件下载

    服务器iis支持.apk文件下载的设置 IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. IIS服务器不能下载.apk文件的解决办法:既然.apk无法 ...