`
morning2008
  • 浏览: 112678 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

(事物学习笔记二) 对Java事物的理解

 
阅读更多

一、什么是Java事物

我们通常说的事物是指数据库事物,那么Java事物又是什么,它与数据库事物之间是什么关系?

Java的开发系统中,如果需要操作数据库,则需要JDBC来连接。新增,修改,删除数据也是通过java代码来操作,所以数据库事物的控制就转移到Java代码中,这时候的数据库事物习惯上就叫做Java事物。

二、Java的事物类型

Java的事物类型有两种:JDBC事物和JTAJava Transaction API)事物

1.JDBC事物

JDBC 事务(本地事物)是用 Connection 对象控制的,下图是一个简单的本地事物处理流程:

JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交

java.sql.Connection 提供了以下控制事务的方法:

public voidsetAutoCommit(boolean)

public booleangetAutoCommit()

public void commit()

public void rollback()

使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。

2.JTA事物(Java Transaction API

JTA(分布式事物)是一种高层的,与实现无关的,与协议无关的API。应用程序可以通过JTA的接口使用事物。JDBC事物相比,JTA事物允许访问或者更新多个资源(通常是数据库),极大的提高了数据的访问能力。下图是一个简单的分布式事物的处理流程:

1.UserTransaction—javax.transaction.UserTransaction接口提供能够编程地控制事务处理范围的应用程序。 javax.transaction.UserTransaction方法开启一个全局事务并且使用调用线程与事务处理关联。

2.Transaction Manager—javax.transaction.TransactionManager接口允许应用程序服务器来控制代表正在管理的应用程序的事务范围。

3XAResource—javax.transaction.xa.XAResource接口是一个基于X/Open CAE Specification的行业标准XA接口的Java映射。

注意:

如果一个程序已经用了分布式事物的XA连接就不要再用JDBC连接,即不要使用java.sql.Connection. commit()java.sql.Connection. rollback()

三、容器事物

容器事物一般是指J2EE容器自己的提供的事物管理机制,这里笔者理解容器事物应该是指框架事物,例如EJBHibernate等框架提供的事物服务。其原理是对JDBCJTA的再次封装,在使用上提供了更加方便的API或者是更强大的声明式的事物管理。

四、JDBC事务隔离级别

在多线程访问数据源的情况下,事物之间使用锁隔开的。JDBCAPI提供了5中不同级别的隔离级别,具体如下:

TRANSACTION_NONE不支持事务。

TRANSACTION_READ_UNCOMMITTED在提交前一个事务可以看到另一个事务的变化。这样脏读、不可重复的读和虚读都是允许的。

TRANSACTION_READ_COMMITTED读取未提交的数据是不允许的。这个级别仍然允许不可重复的读和虚读产生。

TRANSACTION_REPEATABLE_READ:事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。

TRANSACTION_SERIALIZABLE是最高的事务级别,它防止脏读、不可重复的读和虚读。

在程序开发时可以通过Connection对象使用上面的几种隔离级别,事物的级别越高,性能损耗就越大。

 

分享到:
评论

相关推荐

    JPA的学习笔记(java注解,事物)

    JPA是什么。自己上网查资料吧,关于JPA 的一些东西,自己慢慢看慢慢体会吧。doc 文档。

    Java学习笔记(必看经典)

    Java学习笔记(必看经典) JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性)...

    达内java学习笔记-总最全

    java学学习必备 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉...

    JAVA的面向对象编程Java学习笔记(必看经典).doc

    JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...

    记录所有有关java的学习笔记.rar

    JAVA是一种面向对象的程序设计语言,面向对象就是在计算机设计程序过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 1.1 面向对象 面向对象编程的本质就是:以类的方式...

    Java学习笔记

    Java 到底有哪些优势? 1.跨平台(平台=OS) 可移植性 在不同的操作系统之上可以不用做任何代码的修 改 直接使用 a) 字节码文件:字节码文件不包括任何内存布 局信息 与操作系统和硬件毫无关系 (Java 的内存分布是在...

    MySQL学习笔记、学习文档

    MySQL入Ar ]很简单学习笔记李国华.dox Oracle查看表结构.txt SQL作业代理禁用.txt sql.txt SQL-Transaction事物一起执行.txt sq和oracle的区别.txt sysobjects中type字段值意思txt W3School例句.txt 按照中文首字母...

    java学习笔记

    所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 为什么要使用面向对象: 首先,面向对象符合人类...

    Java20天笔记

    20多天的java笔记,包含html,css,js,mysql,jdbc,jxml和tomcat,servlet,开发模式,ajax,事物与连接池,cookie和session,request和response,文件的上传和下载,过滤器,拦截器,监听器。都是新人入门必须要学习和掌握的,拿...

    韩顺平oracle学习笔记

    韩顺平oracle学习笔记 第0讲:如何学习oracle 一、如何学习oracle Oracle目前最流行的数据库之一,功能强大,性能卓越。学习oracle需要具备一定基础: 1.学习过一门编程语言(如:java ,c) 2.最好学习过一门别的...

    数据库学习笔记

    该笔记共有8天,从数据库的建表,到最后的java连接数据库,事物处理及银行转账的案例。可以满足初学者的需求,欢迎大家踊跃下载

    Java学习笔记之面向对象基本概念

     对象是构成现实世界的一个独立单位,人们对世界的认识,是从分析对象的特征入手的。  对象的特征分为静态特征和动态特征两种。静态的特征指对象的外观、性质、属性等; 动态的特征指对象具有的功能、行为等。 ...

    JavaScript对象笔记.rar

    什么是对象 简单点说,编程语言中的对象是对现实中事物的简化。例如,我们一个人就是一个对象,但是编程...在后面的JavaScript对象笔记中,记录了菜鸟在学习JavaScript对象的大多数资源,希望这些资源对你也有价值。

    Java-Notes:清晰简洁,节奏明快,易于理解的Java编程语言的核心概念

    Java笔记 该存储库包含简洁明了,节奏明快,易于理解的核心概念,旨在使Java成为那些想要学习新事物的人的明智之举,因为它会让人们感到天生的优势。

    javasnmp源码-note:学习笔记

    封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展...

Global site tag (gtag.js) - Google Analytics