一、什么是Java事物
我们通常说的事物是指数据库事物,那么Java事物又是什么,它与数据库事物之间是什么关系?
在Java的开发系统中,如果需要操作数据库,则需要JDBC来连接。新增,修改,删除数据也是通过java代码来操作,所以数据库事物的控制就转移到Java代码中,这时候的数据库事物习惯上就叫做Java事物。
二、Java的事物类型
Java的事物类型有两种:JDBC事物和JTA(Java 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接口允许应用程序服务器来控制代表正在管理的应用程序的事务范围。
3.XAResource—javax.transaction.xa.XAResource接口是一个基于X/Open CAE Specification的行业标准XA接口的Java映射。
注意:
如果一个程序已经用了分布式事物的XA连接就不要再用JDBC连接,即不要使用java.sql.Connection. commit()和java.sql.Connection. rollback()。
三、容器事物
容器事物一般是指J2EE容器自己的提供的事物管理机制,这里笔者理解容器事物应该是指框架事物,例如EJB,Hibernate等框架提供的事物服务。其原理是对JDBC和JTA的再次封装,在使用上提供了更加方便的API或者是更强大的声明式的事物管理。
四、JDBC事务隔离级别
在多线程访问数据源的情况下,事物之间使用锁隔开的。JDBC的API提供了5中不同级别的隔离级别,具体如下:
TRANSACTION_NONE:不支持事务。
TRANSACTION_READ_UNCOMMITTED:在提交前一个事务可以看到另一个事务的变化。这样脏读、不可重复的读和虚读都是允许的。
TRANSACTION_READ_COMMITTED:读取未提交的数据是不允许的。这个级别仍然允许不可重复的读和虚读产生。
TRANSACTION_REPEATABLE_READ:事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。
TRANSACTION_SERIALIZABLE:是最高的事务级别,它防止脏读、不可重复的读和虚读。
在程序开发时可以通过Connection对象使用上面的几种隔离级别,事物的级别越高,性能损耗就越大。
相关推荐
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
这篇“事物学习笔记一”主要聚焦于对数据库事务的理解,通过深入探讨其基本概念、特性以及在实际操作中的应用,帮助读者构建对这一核心概念的全面认识。 首先,我们需要理解什么是数据库事务。在数据库管理中,事务...
Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...
在Java中,对象是类的实例,类是对具有相似属性和行为的事物的抽象。一个对象包含属性(或称为字段),这些属性描述了对象的状态,以及方法,这些方法定义了对象的行为。例如,一个`Student`类可能有`name`和`age`...
### Java学习笔记:深入理解继承、多态与抽象 #### 一、面向对象的三大特性:封装、继承、多态 面向对象编程的核心在于其三大特性:封装、继承和多态。这三种特性使得面向对象编程更加灵活和高效。 1. **封装**:...
《Think In Java 学习笔记》 在Java编程语言中,对象是核心概念,它们代表着程序中的实体和行为。对象具有状态、行为和标识,是现实世界概念在软件中的映射。对象的状态由其内部的属性(或称数据成员)表示,行为则...
- **简单性**:Java语言设计简洁明了,易于学习和使用。 - **健壮性**:Java拥有严格的错误检测机制,有助于开发健壮的应用程序。 #### 1.2 运行原理 Java程序的运行分为几个阶段: 1. **编写**:使用文本编辑器...
【Java学习笔记】 Java是一种广泛使用的编程语言,以其跨平台性、面向对象特性和安全性而闻名。Java的优点在于它的字节码技术使得程序能够在不同操作系统上运行,无需重新编译,这得益于Java虚拟机(JVM)。此外,...
Java学习笔记总结 本篇笔记总结了 JavaSE 和 JAVAEE 的基础知识点,涵盖了面向对象编程的概念、类和对象、实例变量、局部变量、方法、构造方法、对象的传递等方面。以下是本篇笔记的详细知识点总结: 一、面向对象...
在Java编程语言中,面向对象编程是核心概念之一。本篇笔记主要围绕面向对象的三大特性——封装、继承和多态,以及类和对象的基本...这些内容构成了Java程序员必备的基础知识,对于理解Java程序设计的核心思想至关重要。
JPA(Java Persistence API)是一套由Sun Microsystems引入的标准,用于Java应用中的对象/关系映射(Object/Relational Mapping,简称ORM)。它支持两种元数据形式:XML和JDK 5.0注解。作为一套ORM规范,JPA允许...
【JAVA学习笔记总结】 在Java编程语言中,面向对象编程是一种核心的概念,它与面向过程编程有所不同。面向过程编程以函数或步骤为中心,而面向对象编程则是以对象为中心,强调数据和行为的封装。在面向对象编程中,...
### Java EE 学习笔记:面向对象编程深入解析 #### 面向对象与面向过程对比 面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中的一种核心编程范式,它强调以对象作为基本单位进行设计和编码。与...
### Java学习笔记经典知识点解析 #### 一、Java的核心概念:一切皆对象 在Java语言中,几乎所有事物都被视为对象。这种设计哲学是基于面向对象编程(OOP)原则的,它将现实世界中的实体抽象为类和对象的形式,使得...
### Think in Java 学习笔记知识点总结 #### 第1章:对象导论 - **一切皆为对象**:Java 中的几乎所有事物都是对象,对象通过发送消息的方式进行交互。 - **对象模型**:每个对象都有自己的存储空间,该空间由其他...
### Java学习速成笔记 #### 一、概览与学习目标 本篇“Java学习速成笔记”旨在帮助读者在短期内快速掌握Java编程的核心概念和技术要点,并能够在学习后的七天内具备基本的工作能力。该笔记内容详实,既适合零基础...