事务特点:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)
Java事务类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务
1、JDBC事务,优点:使用简单;缺点:局限在一个数据库连接内
2、JTA事务,优点:功能强大,事务可以跨越多个数据库或多个DAO;缺点:使用复杂。
3、容器事务,优点:主要指的是J2EE应用服务器提供的事务管理;缺点:局限于EJB应用使用
----------------------------------------------------------------------------------------------------------------
JDBC 事务:是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。
JDBC 事务优点:简单
缺点:是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库
JDBC事务:
需要事务的场合的增、删、改操作
public static void update(User user){
String sql ="update emp_xxx set salary="+ ? "where empno="+?;
String sql2="insert into logs_xxx values(myseq_log.nextval,?,?)";
Connection conn =DriveManager.getConnection("url","userId","pwd");
PrepareStatement pre=null;
try{
conn.setAutoCommit(false);
pre=conn.getPrepareStatement(sql);
pre.setDouble(1,user.salary());
pre.setInt(2,user.getId());
int n1=pre.executeUpdate();
pre=conn.getPrepareStatement(sql2);
pre.setDouble(1,user.getName());
pre.setInt(2,user.getId());
int n2=pre.executeUpdate();
if(n1==1 && n2==1){
conn.commit();
}else{
conn.rollback();
}
conn.setAutoCommit(true);
}catch(Exception e){
conn.rollback();
e.printStackTrace();
}finally{
pre.close();
conn.close();
}
}
-------------------------------------------------------------------------------------------------------------------------
JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。
JTA允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的 JTA支持极大地增强了数据访问能力。
如果计划用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序将可以参与 JTA 事务。一个 XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection s 是参与 JTA 事务的 JDBC 连接。
您将需要用应用服务器的管理工具设置 XADataSource 。从应用服务器和 JDBC 驱动程序的文档中可以了解到相关的指导。
J2EE 应用程序用 JNDI 查询数据源。一旦应用程序找到了数据源对象,它就调用 javax.sql.DataSource.getConnection() 以获得到数据库的连接。
XA 连接与非 XA 连接不同。一定要记住 XA 连接参与了 JTA 事务。这意味着 XA 连接不支持 JDBC 的自动提交功能。同时,应用程序一定不要对 XA 连接调用 java.sql.Connection.commit() 或者 java.sql.Connection.rollback() 。
相反,应用程序应该使用 UserTransaction.begin()、 UserTransaction.commit() 和 serTransaction.rollback() 。
----------------------------------------------------------------------------------------------------------------------------
容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。相对编码实现JTA事务管理,我们可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能,这项功能由J2EE应用服务器提供。这使得我们可以简单的指定将哪个方法加入事务,一旦指定,容器将负责事务管理任务。这是我们土建的解决方式,因为通过这种方式我们可以将事务代码排除在逻辑编码之外,同时将所有困难交给 J2EE容器去解决。使用EJB CMT的另外一个好处就是程序员无需关
相关推荐
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务...
本文来自于csdn,本文主要从分布式的原因,事务特性,和解决方案中深入理解了分布式事务,希望对您的学习有所帮助。 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的...
Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...
"JPA事务管理" JPA(Java Persistence API)是一种Java持久化规范,它提供了一个抽象层来访问关系数据库。JPA的事务管理是指对一系列操作的管理,包括创建、读取、更新和删除(CRUD)等操作。事务管理的目的是确保...
在SQL Server中,事务是确保数据一致性的重要机制,特别是在存储过程中。存储过程是一组预编译的SQL语句,可以在数据库中被多次调用,提高了效率并降低了网络流量。本篇将详细介绍如何在SQL Server存储过程中使用...
### Spring自定义切面事务问题 #### 背景与挑战 在开发基于Spring框架的应用程序时,我们经常需要利用AOP(面向切面编程)来实现横切关注点(如日志记录、安全控制、事务管理等)的模块化处理。其中,事务管理是...
C#作为.NET框架的主要编程语言,提供了强大的支持来实现AOP,特别是在处理事务管理方面。事务是数据库操作的核心概念,确保数据一致性并能够在异常情况下进行回滚。 C#实现AOP事务的关键在于利用特性(Attribute)...
在这个主题中,我们将深入探讨如何在C#中使用SQLHelper类进行事务操作,以及事务的重要性和应用。 事务是数据库操作的基本单位,它确保一组操作要么全部成功,要么全部失败,从而维护数据的一致性。在C#中,我们...
### Spring中事务的传播属性详解 #### 一、引言 在使用Spring框架进行应用程序开发时,事务管理是一项非常重要的特性。Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其...
C# 中增加 SQLite 事务操作支持与使用方法 在 C# 中使用 SQLite 数据库时,事务操作是非常重要的一部分。事务操作可以确保数据库的数据一致性和完整性,避免数据不一致的情况。下面将详细介绍 C# 中增加 SQLite ...
【分布式事务与TransactionScope详解】 分布式事务是在多台计算机或多个数据库系统间协调进行的一组操作,目的是确保跨多个资源的数据一致性。TransactionScope是.NET框架2.0引入的一个类,用于简化分布式事务的...
### 分布式事务若依框架文档 #### 一、分布式事务基本概念 在理解分布式事务之前,我们首先需要了解数据库事务的基本属性,即ACID特性。 - **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败...
Java分布式事务是大型分布式系统中不可或缺的一个重要组成部分,它确保在多个网络节点间的数据操作能够保持一致性和完整性。在分布式环境中,由于多个服务之间可能存在数据交互,因此需要一种机制来处理跨服务的数据...
### Spring Boot 与 Spring 事务详解 #### 一、引言 在现代企业级应用程序开发中,事务管理是一项至关重要的技术。它确保了一系列操作能够作为一个整体成功或失败,从而维护了数据的一致性和完整性。Spring 框架...
SQL Server中的事务日志是数据库管理系统的关键组成部分,它在确保数据的持久性和事务一致性方面扮演着核心角色。事务日志的物理结构主要由虚拟日志文件(Virtual Log Files, VLFs)组成,这些文件是日志文件的逻辑...
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...
DRDS(Distributed Relational Database Service,分布式关系型数据库服务)是一种分布式数据库中间件,旨在简化分布式数据库事务的管理和维护。在数据库系统中,事务是一组操作,这些操作要么全部成功,要么全部...
在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理应用中的事务。Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何...