文章目录

  • 数据库事务提交的三种方式:
  • 为什么需要隐式提交:
  • 通过不同的数据库来介绍自动提交和手动提交:
  • 举例:
数据库事务提交的三种方式:

手动显式提交、隐式提交及自动提交。

参考:https://blog.csdn.net/qq_43686584/article/details/84548264

  • 手动显式提交:

    手动管理事务时,需要用COMMIT命令直接完成的提交为显式提交。相关sql为:

    SQL>COMMIT;
    
  • 自动提交

    自动提交开启了之后相当于每次sql都是一个事务,并自动提交它,如果sql语句执行失败会自动还原现场。相关sql为:

  SQL>SET AUTOCOMMIT ON;
  • 隐式提交
    不管是手动管理事务还是自动管理事务,都存在隐式自动提交。
    隐式提交的场景:
    1、正常执行完DDL语句。
    2、正常执行完DCL语句。
    3、正常退出数据库管理软件或切换用户时没有明确发出commit或者rollback。

    对应的SQL命令有:用SQL命令间接完成的提交为隐式提交,ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。举例说明:

    以scott账号登陆,执行delete from dept where deptno=50后,再换system账号登陆,发现deptno=50的数据行已经被删除了,而show autocommit=OFF;原因:同一客户端切换用户,使用disconnect、connect命令,是会隐式提交事务的。解决方法:再打开一个控制台sqlplus用另一用户登录啊。在一个sqlplus不可能用多个session的。
为什么需要隐式提交:
  • 我们在执行DDL语句的时候,Oracle需要在它的系统表中进行元数据的记录操作(即:除了建表还会进行不少insert操作)DML会对每个语句的每条记录都做日志记录以便于回滚,而DDL往往没必要搞这么复杂,从功能和易用性上看隐式提交都是最好的选择。
通过不同的数据库来介绍自动提交和手动提交:

mysql数据库原始操作默认是自动提交,具体由框架和中间件封装后的数据库操作是不是自动提交要看具体框架。

Oracle数据库原始操作默认是手动管理事务。所有自动提交,都是一些别的框架或中间件提供的.

我们还可以把数据库的客户端图形化操作工具sqlyang、dbeaver、Plsql Dev看作是数据库中间件,他们是自动还是手动提交,取决于自己这个软件。比如

sqlyang操作mysql数据库时,是默认自动管理事务(即自动提交的),即你的操作会自动提交   Dbeaver操作oracle数据库时,是默认自动管理事务的(即自动提交的 ),即你的操作会自动提交。    PLSQL Dev 操作oracle数据库时,是默认手动管理事务(即非自动提交的),即你的操作需要手动提交或回滚。
举例:

SX银行某XD系统的本地eclipse开发所连接的Oracle库是需要手动管理事务的,而测试和生产上的oracle数据库却是自动提交的。

这是因为,某银行的web项目测试环境和生产环境都是部署在他们的weblogic服务器上,根据银行的规范,部署在WebLogic Server上的应用程序如果需要访问数据库,原则上需要通过WebLogic提供的JDBC连接池来管理数据库连接。而WebLogic 提供的JDBC连接池的connction上的事务是自动提交的。(这里weblogic不仅作为web服务器,还作为数据库中间件而存在了)

那么,如果业务场景需要你手动管理事务呢?那就java代码里写下手动管理事务呗。如下

package com.amar.dateAndCalendar;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.SQLException;import org.apache.log4j.Logger;import com.amar.utils.JDBCUtils;public class LL {public static Logger log=Logger.getLogger(LL.class);public static void main(String[] args) throws IOException, SQLException {Connection conn=JDBCUtils.getConnection();boolean autoCommit = conn.getAutoCommit();log.info("此环境是否自动提交呢"+autoCommit);if (autoCommit) {conn.setAutoCommit(false);}try {//DML语句一//DML语句二//DML语句三conn.commit();} catch (Exception e) {conn.rollback();log.info(e.getMessage(),e);throw e;}finally {conn.setAutoCommit(autoCommit);//手动管理事务用完以后恢复回原来。}}
}

数据库事务的三种提交方式介绍相关推荐

  1. 分布式锁简单入门以及三种实现方式介绍(滴滴)

    很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的 ...

  2. 分布式锁简单入门以及三种实现方式介绍

    分布式锁简单入门以及三种实现方式介绍 2018年01月11日 21:16:28 徐刘根 阅读数:37912 标签: 分布式 分布式锁 高并发 更多 个人分类: 集群分布式 版权声明:本文为博主原创文章 ...

  3. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  4. 分布式锁简单入门以及三种实现方式介绍_徐刘根的博客-CSDN博客

    原文地址 rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmled ...

  5. 可网管交换机的三种管理方式介绍

    交换机的按是否可网管,分为可网管交换机和不可网管交换机,可网管交换机可以通过以下几种途径进行管理:通过RS-232串行口(或并行口)管理.通过网络浏览器管理和通过网络管理软件管理.接下来就由杭州飞畅科 ...

  6. Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/ 首先我们先介绍一下为什么要让 Apache 与 Tomcat ...

  7. android 三种定位方式 介绍

    三种获取手机的位置的方式_20 1.网络定位(network).前提是必须连上网络:wifi.3G.2G: 获取到IP地址 例如:传美版QQ,彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对方的IP: 根 ...

  8. Oracle数据库三种备份方式介绍

    冷备份 备份 直接拷贝oracle目录下的admin.oradata(datafile, controlfile,redo).flash_recovery_area三个文件夹,db_1目录下datab ...

  9. selenium的三种等待方式介绍及优缺点

    等待的作用 UI自动化中,运行的时候页面是需要有加载时间的. 等待作为ui自动化中极其核心的技术,是因为通过等待,才可以更好地保障自动化测试的稳定性. 三类等待机制 1.强制等待 就是time库下的s ...

最新文章

  1. 直播源码:直播+内容营销新趋势
  2. java key值_java-必须为此操作提供PartitionKey值
  3. Java黑皮书课后题第2章:*2.21(金融应用:计算未来投资回报)编写程序,读取投资总额、年利率和年龄,显示未来投资回报金额
  4. MIUI10迎来最后一波开发版推送 用户体验再升级
  5. 2021年,对话系统该如何学?
  6. 学习python: x+=1 与 x = x + 1
  7. 一万小时定律的数学解释
  8. SessionID的传送
  9. UML建模:基于智慧校园的二手交易平台
  10. 软件开发生命周期的管理
  11. VMWARE虚拟机启动失败,模块“Disk”启动失败
  12. android 尺寸
  13. 我的移动智能2-corner detection
  14. 如何使用 DDD 指导微服务拆分?
  15. 【数学计算】点乘/点积/内积/数量积/叉乘/外积/叉积/向量积
  16. 如何通过检测微芯片操作来对抗硬件木马
  17. 程序员福利:各大平台免费接口
  18. 你真的理解AIDL中的in,out,inout么?
  19. 深度对话:异构系统集成平台如何让企业降本增效
  20. 计算机绘图自考知识点,计算机绘图(电子CAD)自考大纲-08年9月.doc

热门文章

  1. rtl8188eus Linux驱动移植
  2. 转战微博—从Twitter上市谈起
  3. gradle安装配置与使用
  4. wifi 直连 wifi p2p
  5. Wifi P2p点对点连接详解
  6. eclipse tomcat启动失败
  7. centos7 mysql 3306端口_Centos7开启/关闭3306端口实现远程连接数据库
  8. 昨晚外围大涨,看今天大A表现
  9. 【蠢哭自己系列】Linux转到桌面目录下
  10. 苹果做游戏了,sony线上商店了。