java数据库事物处理

java实现纯真IP数据库的接口源码 该接口内直接封装了直接调用QQWry.dat的源码。可以直接调用哦 立即下载

JAVA中数据库事务处理的实现

张蔓  陈景春

成都电子科技大学计算机学院

摘要  本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean、Ejb组件实现J2EE应用服务器支持的JDBC事务、JTA(Java Transaction API)事务。

关键词  JavaBean,EJB, 数据库,事务处理,JTA

 

1  JavaBean

JavaBean是用Java语言编写的与平台无关的组件。它是描述Java的软件组件模型,有点类似于Microsoft的COM组件的概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。JavaBean可以实现代码的重复利用,对于程序的易维护性也有重大的意义。非可视化的JavaBean,在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离。JavaBean在服务器端的应用方面表现出了越来越强的生命力。

 

2  EJB

EJB技术定义了一组可重用的组件:Enterprise JavaBeans。你可以利用这些组件,像搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个Enterprise Beans,在加上一些配置参数。最后,这些Enterprise Beans被配置到一个装了EJB容器的平台上。客户能够通过这些Beans的home接口,定位到某个beans,并产生这个beans的一个实例。这样,客户就能够调用Beans的应用方法和远程接口。EJB技术简化了用JAVA语言编写的企业应用系统的开发、配置和执行。有三种类型的Enterprise beans: Session beans、 entity beans和Message-driven Beans。

 

3  事务处理:

信息是任何企事业单位的重要资产,任何企业部门都包含着信息的流入、流出,任何企业部门都控制着某些信息。同时,信息必须在适当的时机传播给需要的人。而且,信息还需要安全约束,通常根据信息的类型和内容实施访问控制。为了保证数据的安全有效和正确可靠,数据库管理系统(DBMS)必须提供统一的数据保护功能。

事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

在下面我们列举一个使用SQL Server数据库进行事务处理的例子。主表是一个规章制度信息表(bylaw),主要字段有记录编号、标题、作者、书写日期等。两个子表分别是附件表(bylaw_affix)和文本信息表(bylaw_content)。表结构见图1所示。bylaw表的记录编号与bylaw_affix表的记录编号、bylaw_content表的记录编号是对应的,每次对规章制度信息的操作也就是对这三个表的联合操作。例如要删除规章制度中的一条记录,如果不使用事务,就可能会出现这样的情况:第一个表中成功删除后,数据库突然出现意外状况,而第二、三个表中的操作没有完成,这样,删除操作并没有完成,甚至已经破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么三个表都操作成功,要么都失败。换句话说,就是保持数据的一致性。所以,为了确保对数据操作的完整和一致,在程序设计时要充分考虑到事务处理方面的问题。

 
                                             


图1 示例表结构

 

4  Java中的事务处理:

一般情况下,J2EE应用服务器支持JDBC事务、JTA(Java Transaction API)事务、容器管理事务。一般情况下,最好不要在程序中同时使用上述三种事务类型,比如在JTA事务中嵌套JDBC事务。第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面我们列举两种事务处理方式。

4.1  JavaBean中使用JDBC方式进行事务处理

在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。

public int delete(int sID) {

    dbc = new DataBaseConnection();

    Connection con = dbc.getConnection();

    try {

  con.setAutoCommit(false);// 更改JDBC事务的默认提交方式

      dbc.executeUpdate("delete from bylaw where ID=" + sID);

      dbc.executeUpdate("delete from bylaw _content where ID=" + sID);

      dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);

      con.commit();//提交JDBC事务

      con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式

      dbc.close();

      return 1;

    }

catch (Exception exc) {

  con.rollBack();//回滚JDBC事务

      exc.printStackTrace();

      dbc.close();

      return -1;

    }

  }

4.2  SessionBean中的JTA事务

JTA 是事务服务的 J2EE 解决方案。本质上,它是描述事务接口(比如 UserTransaction 接口,开发人员直接使用该接口或者通过 J2EE 容器使用该接口来确保业务逻辑能够可靠地运行)的 J2EE 模型的一部分。JTA 具有的三个主要的接口分别是 UserTransaction 接口、TransactionManager 接口和 Transaction 接口。这些接口共享公共的事务操作,例如 commit() 和 rollback(), 但是也包含特殊的事务操作,例如 suspend(),resume() 和 enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。例如,UserTransaction 能够执行事务划分和基本的事务操作,而 TransactionManager 能够执行上下文管理。

应用程序可以调用UserTransaction.begin()方法开始一个事务,该事务与应用程序正在其中运行的当前线程相关联。底层的事务管理器实际处理线程与事务之间的关联。UserTransaction.commit()方法终止与当前线程关联的事务。UserTransaction.rollback()方法将放弃与当前线程关联的当前事务。

public int delete(int sID) {

    DataBaseConnection dbc = null;

    dbc = new DataBaseConnection();

    dbc.getConnection();

    UserTransaction transaction = sessionContext.getUserTransaction();//获得JTA事务

    try {

      transaction.begin(); //开始JTA事务

      dbc.executeUpdate("delete from bylaw where ID=" + sID);

      dbc.executeUpdate("delete from bylaw _content where ID=" + sID);

      dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);

      transaction.commit(); //提交JTA事务

      dbc.close();

      return 1;

    }

    catch (Exception exc) {

      try {

        transaction.rollback();//JTA事务回滚

      }

      catch (Exception ex) {

//JTA事务回滚出错处理

      ex.printStackTrace();

      }

      exc.printStackTrace();

      dbc.close();

      return -1;

    }

  }                                        

 

参考文献:

1.  Paul  J.Perrone,et al. 著 《J2EE构建企业系统—专家及解决方案》, 清华大学出版社,2001年6月;

2.  王珊、萨师煊等,《数据库系统概论(第三版)》,高等教育出版社,2000年1月;

3.  Bruce Eckel,《Thinking In Java—The Third Edition》,机械工业出版社,2002年10月。

java数据入库 NULL 博文链接:https://jaybin.iteye.com/blog/1704825 立即下载

相关推荐

java代码-使用java解决数据库事务处理的源代码

java代码-使用java解决数据库事务处理的源代码 ——学习参考资料:仅用于个人学习使用!

Java程序设计——事务管理(JDBC编程)

事务是由一步或几步数据库操作序列组成的逻辑执行单元,这些序列要么都执行,要么都不执行事务的四个特性:事务处理过程的三个概念:事务操作的具体步骤:注意:Connection接口在默认情况下会自动提交,即事务是关闭的,即一条SQL语句执行成功后,系统会立即调用commit()方法提交到数据库,而无法对其进行rollback回滚操作通过调用Connection对象的setAutoCommit(boolean bool)方法可以开启或者关闭自动提交模式代码: 实例演示: 根据结果集返回的数据可知,JDBC似

Mr_John 1694

Java基于JDBC实现事务,银行转账及货物进出库功能示例

主要介绍了Java基于JDBC实现事务,银行转账及货物进出库功能,较为详细的分析了事务操作的原理、实现方法及java基于jdbc连接数据库实现银行事务操作的相关技巧,需要的朋友可以参考下

使用Java编程语言进行实验。采用面向对象的思想进行系统设计。 实现基本的图书管理功能,包括添加图书、删除图书、查询图书信息等。

使用Java编程语言进行实验。采用面向对象的思想进行系统设计。 实现基本的图书管理功能,包括添加图书、删除图书、查询图书信息等。

m0_69595107的博客 513

Scratch(四十一):升级版垃圾分类

哈喽,大家好!之前给大家展示过“Scratch(二十四):垃圾分类”。今天呢,给大家展示的Scratch是`升级版垃圾分类`。接下来,我们一起看一下效果吧。

我可以很大侠的博客 6866

具身智能端到端大模型VLA (Vision Language Action)

在语言为条件的机器人任务中,策略必须具备理解语言指令、视觉感知环境并生成适当动作的能力,这就需要VLA的。例如,在自动驾驶领域,传统的做法是将感知、预测、规划等步骤分开处理,而VLA则试图用一个统一的框架来替代这种分立的方法。另外,VLA的模型对于算力的需求很大,单片AI算力1000Tops的Thor大概率会延期发布,加上英伟达芯片的量产时间与成本挑战,以及在国内的应用情况,对车企而言是个大问题。以谷歌DeepMind推出的RT-2为例,该模型可以在新的物体、背景和环境中表现出显著改善的性能。

具身智能机器人 1万+

后面事务依赖前一个事务,如何在一个事务中部分事务先提交

后面事务依赖前一个事务,如何在一个事务中部分事务先提交 项目中经常存在一个事物中先提交后面事务再操作,如何保证前一个事务提交成功? @Override @Transactional(propagation = Propagation.NOT_SUPPORTED,rollbackFor = Exception.class) public Object DOtrance() { int update = 0; TranUser tranUser = transa

qq_40076012的博客 2052

倾斜摄影与地面激光点云融合高精度建模研究

本文研究了倾斜摄影与地面激光点云融合精细化建模技术,并通过相应的源代码实现了建模过程。该方法将倾斜摄影和激光扫描相结合,能够获得高精度的三维建模结果,为相关领域的研究和应用提供了有力支持。近年来,倾斜摄影和激光扫描技术的快速发展为高精度三维建模提供了新的机遇和挑战。本文针对倾斜摄影与地面激光点云融合建模这一前沿领域展开研究,旨在通过相应的源代码实现精细化的建模过程。同时,使用激光扫描仪进行地面激光扫描,获取地面的点云数据。经过数据融合和精细化建模处理后,我们获得了高精度的三维建模结果。

LpmShell的博客 1245

MySQL 四种隔离级别

Mysql的四种隔离级别 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是M

weixin_44824389的博客 803

12、硬件工程师笔试面试——MOS管(2025版本)

在设计和测试过程中,可以参考相关的EMC测试标准和指南,如CE认证EMC电磁兼容测试介绍 和电磁兼容性(EMC)测试方法与整改指南 ,以及电磁兼容(EMC)的标准与测试内容 ,来确保MOSFET的EMC性能符合行业标准。在高频应用中,MOSFET的开关速度对电路的整体性能至关重要。是一款高电压同步N沟道MOSFET驱动器,具有自举电源电压至114V的能力,宽VCC电压范围,自适应贯通保护功能,以及高达1.4A的峰值顶端栅极上拉电流,适用于分布式电源架构、汽车电源、高密度电源模块和电信系统等应用。

XU157303764的博客 7090

SAP Gateway OData V4 大数据集合分页机制详解,$skiptoken、Next Link 与服务端分页

更关键的是确定稳定排序方式,选择可靠的分页游标,限制单次 Response Size,正确生成 Next Link,让 Consumer 把 Next Link 当成不可解释的协议结果,并明确区分 Pagination、Delta Synchronization 和 Snapshot Consistency。从协议表达来看,请求没有问题。假设系统内部配置为每次最多返回 100 条,而数据库里一共存在 12580 条符合条件的销售订单,那么第一次响应只包含前 100 条,同时附带一个 Next Link。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 50

JAVA数据库事物处理

本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean、Ejb组件实现J2EE应用服务器支持的JDBC事务、JTA(Java Transaction API)事务。   关键词 JavaBean,EJB, 数据库,事务处理,JTA   JavaBean   JavaBean是用Java语言编写的与平台无关的组件。它是描述Java的软件组件模型,有点类似

gangannini的专栏 747

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用

多标签图像分类:标签依赖关系建模的最新论文解读与实战应用 ,人工智能,计算机视觉,大模型,AI,本文解读了最新相关论文,包括基于图神经网络(GCN)的ML-GCN方法,通过构建标签相关矩阵建模依赖关系;区域潜在语义依赖的RLSD模型,定位关键区域并利用RNN建模语义依赖;以及语义图表示学习的SSGRL框架,结合语义解耦与交互模块。通过实战应用,展示了基于PyTorch的ML-GCN模型实现,包括图像特征提取、标签依赖建模及训练评估流程,为多标签图像分类提供了有效解决方案。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

Java数据库编程(八)_5.批处理与事物处理

知识点: 1.掌握批处理的操作流程。 2.掌握JDBC中提供的事物操作。 具体内容:     在之前所使用的全部的数据库操作严格来讲属于JDBC1.0中就规定的操作模式,而最新JDBC是4.0版本,但是很少人使用。但是从JDBC2.0开始增加了一些神奇的功能:可滚动的结果集,可以利用结果集执行增加、更新,删除操作。     所谓的批处理指的是一次性向数据库发出多条操作命令,一起执行 。如...

ninety_two的博客 360

程序化广告ADX系统架构设计与实现

摘要: 本文详细介绍了程序化广告交易平台(ADX)的系统架构设计与实现。ADX作为连接广告主与媒体的核心平台,采用基于腾讯云和阿里云的微服务架构,包含网络基础设施、负载均衡、消息处理、核心业务服务和多级数据存储等层次。重点解析了Kafka消息队列处理高并发广告请求、Redis实时统计关键指标等核心技术实现,并提供了Java代码示例展示广告请求处理、竞价流程等核心功能。该系统通过分层设计和分布式组件,实现了高性能、高可用的程序化广告交易能力。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 767

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 934

java实现数据库事物的处理

   以前很不理解回滚这个东西,现在突然明白了,通过这个例子   通过一个dao 和一个service层来实现    创建数据库    create table money(name varchar(20),qian int(20));    insert into money(name,qian)values('zs',1000);    insert into money(name,qian)...

大曹的博客 1743

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JAVA-22-JDBC批处理、获取自增长值、处理大数据文件、数据库事物

一、JDBC进行批处理1.1 为什么要用批处理?   之前:一次操作只能发送一条sql语句到数据库服务器,效率并不高!如果要插入2000条记录,那么必须发送2000条sql语句。(如果IO流的话,一次写出一个字节,显然效率效率并不高,所以可以使用缓存字节数组提高每次写出的效率。)   现在:插入2000条记录,但现在使用sql缓存区,一次发送多条sql到数据库服务器执行。这种做法就叫做批处理。

喵喵的博客 717

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mysql数据库事务模拟转账_MySQL_(Java)【连接池】使用DBCP简单模拟银行转账事物

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;public classJDBC01 {public static ...

weixin_39952800的博客 101

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

华清远见-重庆中心-数据库阶段知识点梳理/个人总结

对数据库的知识点梳理

lslc2000的博客 328

数据库理论知识点和java运用

标题一. 数据库简单sql语句 1.插入语法 INSERT INTO 表名(列名) VALUES(列值); 2.删除语法 DELETE FROM 表名 WHERE<删除条件> 3.更新语法 UPDATE 表名 SET 列名=更新值 WHERE 更新条件 4.查询语法 SELECT 列名 FROM 表名 WHERE 条件 5.聚合函数 SUM总和 AVG平均值 MAX最大 MIN最小 C...

weixin_45419424的博客 179

Transaction在Hibernate事物的开启与提交

一种方法是: 一般是session.beginTransaction();//开启 事物 然后是try()里面session.getTransaction().commit()//提交 catch()里面是session.getTransactionA().rollback();//回滚 第二种方法: Transaction tx = session...

weixin_33827731的博客 173

Java操作Oracle

public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; // 数据库连接地址(数据库名) public static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl"; /

umgsai的专栏 725

Java事务处理类(源码)

今天晚上写了一个Java关于Mysql数据库的事物处理类,实现回滚&&部分回滚功能。 Mysql5很好的支持了事物处理功能。不过支持这个功能的只有两种表类型。 分别是BDB,InnoDB。 先建立一个表,名为Kiss,数据为id (int),name(varchar),pop(varchar)。 下面是源码: importjava.sql....

weixin_34191845的博客 78

java 数据库编程

java与数据库交互的主要API是jdbc。jdbc的主要目的是: 1.通过使用SQL或者专有的SQL扩展,程序员可以利用java语言开发访问数据的应用。 2.数据库开发商或者数据库工具开发商改进数据库驱动程序 jdbc通用的使用方式如下: Class.forName(jdbcDriverName);  Connection conn= DriverManag

losefrank的博客 458
上一篇: JAVA UTIL实用工具类库
下一篇: 分页
lwqadmin
博客等级 码龄22年 6粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值