广告
返回顶部
首页 > 资讯 > 精选 >Java事务管理学习之JDBC详解
  • 319
分享到

Java事务管理学习之JDBC详解

javajdbc事务管理 2023-05-31 17:05:43 319人浏览 八月长安
摘要

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

什么是Java事务

通常的观念认为,事务仅与数据库相关。

事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组sql指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。

既然事务的概念从数据库而来,那Java事务是什么?之间有什么联系?

实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。

事务的特性:

1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。

2) 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

3) 隔离性(isolation):一个事务的执行不能被其他事务所影响。

4) 持久性(durability):一个事务一旦提交,事物的操作便永久性的保存在DB中。即使此时再执行回滚操作也不能撤消所做的更改。

事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常是以begin transaction开始,以commit或rollback结束。Commint表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正常结束。Rollback表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态。

自动提交事务:每条单独的语句都是一个事务。每个语句后都隐含一个commit。 (默认)

显式事务:以begin transaction显示开始,以commit或rollback结束。

隐式事务:当连接以隐式事务模式进行操作时,sql server数据库引擎实例将在提交或回滚当前事务后自动启动新事务。无须描述事物的开始,只需提交或回滚每个事务。但每个事务仍以commit或rollback显式结束。连接将隐性事务模式设置为打开之后,当数据库引擎实例首次执行下列任何语句时,都会自动启动一个隐式事务:alter table,insert,create,open ,delete,revoke ,drop,select, fetch ,truncate table,grant,update在发出commit或rollback语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,数据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链,直到隐性事务模式关闭为止。

JDBC事务管理

在使用JDBC的时候, 如何进行事务的管理。直接看一下代码

示例代码

 package com.oscar999.trans;  import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;   public class JDBCTrans {   public JDBCTrans() {   }     public Connection getConnection(String sHostName, String sPortNumber, String sSid, String userName, String passWord) throws SQLException {  Connection conn = null;  String url = getOraclURL(sHostName, sPortNumber, sSid);  conn = DriverManager.getConnection(url,userName,password);  return conn;  }     public void add(Connection conn, String sql) throws SQLException {  Statement stmt = null;  try {   stmt = conn.createStatement();   stmt.execute(sql);  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } finally {   if (stmt != null)   stmt.close();  }  }     public static void main(String[] args) {  // TODO Auto-generated method stub  String sHostName = "";  String sPortNumber = "";  String sSid = "";  String userName = "";  String password = "";   sHostName = "";  sPortNumber = "";  sSid = "";  userName = "";  password = "";   try {   Class.forName("oracle.jdbc.driver.OracleDriver");  } catch (ClassNotFoundException e1) {   // TODO Auto-generated catch block   e1.printStackTrace();  }    JDBCTrans jdbcTrans = new JDBCTrans();  Connection conn = null;  try {    conn = jdbcTrans.getConnection(sHostName, sPortNumber, sSid, userName, password);   conn.setAutoCommit(false);// can't insert, update     //1. add SQL   String addSQL = "insert into TEST_TABLE values('name1','value1')";   jdbcTrans.add(conn,addSQL);    } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } finally {     }   }   private String getOraclURL(String sHostName, String sPortNumber, String sSid) {  String url = "jdbc:oracle:thin:@" + sHostName + ":" + sPortNumber + ":" + sSid;  return url;  }  } 

--结束END--

本文标题: Java事务管理学习之JDBC详解

本文链接: https://www.lsjlt.com/news/227250.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java事务管理学习之JDBC详解
    什么是Java事务通常的观念认为,事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩...
    99+
    2023-05-31
    java jdbc 事务管理
  • 详解Spring学习之编程式事务管理
    前言在前面的内容,基本已经学习了事务的基本概念以及事务隔离级别等,接下来的几个小节,将学习怎么使用Spring进行事务管理,在Spring中,对事务进行管理有多种方法,主要分别编程式和声明式,本小节主要学习编程式事务管理,后面讲学习Spri...
    99+
    2023-05-31
    spring 编程式 事务
  • MySQL学习之事务详解
    目录一. 事务的业务场景二. 事务的使用三. 事务的特性(ACID)1. 原子性(Atomicity)2. 一致性(Consistency)3. 持久性(Durability)4. 隔离性(Isolation)四. 事务...
    99+
    2022-12-08
    MySQL事务使用 MySQL事务
  • Vue3学习之事件处理详解
    目录1.基本使用2.事件修饰符3.按键修饰符1.基本使用 我们可以使用 v-on 指令来监听 DOM 事件,从而执行 JavaScript 代码。 v-on 指令可以缩写为 @ 符号...
    99+
    2022-12-08
    Vue3事件处理 Vue3事件 Vue 事件处理
  • Java Spring5学习之JdbcTemplate详解
    目录一、JdbcTemplate二、实战2.1 引入依赖2.2 配置连接池2.3 配置JdbcTemplate 对象,注入 DataSource2.4 扫描注解2.5 创建 serv...
    99+
    2022-11-12
  • Java学习之缓冲流的原理详解
    目录前言字节缓冲流原理字符缓冲流前言 前面我们已经学习了四种对文件数据操作的基本流,字节输入流,字节输出流,字符输入流,字符输出流。为了提高其数据的读写效率,Java中又定义了四种缓...
    99+
    2023-01-28
    Java缓冲流原理 Java缓冲流
  • Java 基础之NIO 学习详解
    目录一、NIO 简介1、NIO 三大核心(1)缓冲区 Buffer(2)通道 Channel(3)Selector 选择器2、NIO 和 IO 的区别二、NIO 的 API...
    99+
    2022-11-12
  • VUE3基础学习之click事件详解
    目录1. 概述2. click 事件2.1 实现数字递减2.2 事件方法中获取 event 对象2.3 事件方法中增加参数2.4 有参事件方法中获取 event 对象2.5 点击按钮...
    99+
    2022-11-12
  • MySql学习笔记之事务隔离级别详解
    背景 说的事务,大家应该都不陌生,开发用到 MySql 数据库的时候,通常会用到事务。其中比较经典的例子就是转账,比如你要给小明转 50 块钱,而此时你的银行卡也就只有 50 块钱...
    99+
    2022-11-12
  • Java基础学习之接口详解
    目录概述定义格式含有抽象方法含有默认方法和静态方法含有私有方法和私有静态方法基本的实现实现的概述抽象方法的使用默认方法的使用静态方法的使用私有方法的使用接口的多实现抽象方法默认方法静...
    99+
    2022-11-13
    Java接口使用 Java接口
  • Java基础类学习之String详解
    目录1 String不可变性2 不可变的好处3 String+和StringBuilder效率差异4 String, StringBuffer and StringBuilder5 ...
    99+
    2022-12-27
    Java String类 Java String
  • Java与Oracle实现事务(JDBC事务)实例详解
    Java与Oracle实现事务(JDBC事务)实例详解J2EE支持JDBC事务、JTA事务和容器事务事务,这里说一下怎样实现JDBC事务。       JDBC事务是由Connec...
    99+
    2023-05-31
    java jdbc事务 ava
  • Java基础学习之反射机制原理详解
    目录一、什么是反射二、反射的原理三、反射的优缺点四、反射的用途五、反射机制常用的类六、反射的基本使用一、什么是反射 (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细...
    99+
    2022-11-13
  • Python学习之异常处理详解
    目录什么是异常与异常处理异常的语法捕获通用异常捕获具体异常如何捕获多个异常捕获多个异常 - 方法1捕获多个异常 - 方法2本章节主要学习 python 中的异常处理,来看一下该章节的...
    99+
    2022-11-13
  • java学习之路——final关键字详解
    一、概述学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final用于修饰不可改变内容。final...
    99+
    2021-08-02
    java入门 java final 关键字
  • spring学习JdbcTemplate数据库事务管理
    目录spring JdbcTemplate数据库事务管理一、spring 中的事务管理二、spring 事务管理 API三、使用事务管理1. 配置文件2. 类上添加事务注解sprin...
    99+
    2022-11-13
  • Java高级语法学习之反射详解
    目录一、什么是反射二、准备测试:实体类的创建三、反射中的几个重要类及方法(一)反射中的重要类之Class(二)反射中的重要类之Field(三)反射中的重要类之Constructor(...
    99+
    2022-11-13
  • Java基础学习之构造方法详解
    目录一、构造方法概述二、构造方法的注意事项三、标准类制作一、构造方法概述 构造方法是一种特殊的方法 作用:创建对象Student stu = new Student(); 格式: p...
    99+
    2022-11-13
  • Docker系列学习之Swarmmode管理节点常用命令详解
    目录Swarm mode 常用命令管理节点常用命令Swarm mode 常用命令 上回讲了Swarm mode的简介和一些入门基础,这回来说一说。 Swarm 的常用命令大概可以分为...
    99+
    2022-11-13
    Docker Swarm mode管理节点命令 Docker Swarm mode
  • Python学习之虚拟环境原理详解
    目录认识虚拟环境Python中的虚拟环境工具VirtualenvTreminal 终端演示该章节我们学习虚拟环境的相关知识,虚拟环境对于刚刚使用Python的初学者来说使用的概率可能...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作