JDBC_3 数据库事物

JDBC_3 数据库事物数据库事务数据一旦提交,就不可回滚那些操作会导致数据的自动提交?DDL操作一旦执行,都会自动提交-. set autocommit = false不起作用DML默认情况下,一旦执行就会自动提交-. 可以设置set autocommit = false关闭连接的时候会自动提交 Connection connection = DriverManager.getConnection(url, user, password); connection.setAutoCommit

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

数据库事务


数据一旦提交,就不可回滚
那些操作会导致数据的自动提交?

  1. DDL操作一旦执行,都会自动提交
    -. set autocommit = false不起作用
  2. DML默认情况下,一旦执行就会自动提交
    -. 可以设置set autocommit = false
  3. 关闭连接的时候会自动提交
		Connection connection = DriverManager.getConnection(url, user, password);
        connection.setAutoCommit(false);
        String sql1 = "update user_table set balance = balance - 100";
        update(connection,sql1,"AA");
        String sql2 = "update user_table set balance = balance + 100"
        update(connection,sql2,"BB");
        connection.commit();

注意 若Connection没有被关闭,还有可能被重复使用,则需要恢复其自动提交状态。尤其是在使用数据库连接池技术的时候。

事务的ACID属性

  1. 原子性(Atomicity):原子性是值事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生
  2. 一致性(Consistency):事务必须是数据库从一个一致性状态变换到另外一个一致性状态
  3. 隔离性(Isolation):事务的隔离性是指一个事物的执行不能被其他事务干扰,即一个事物内部的操作及使用的数据对冰法的其他事务是隔离的,并发执行的各个事物之间不能相互干扰
  4. 持久性(Durability):持久性是指一个事务一旦被提交,他对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响
    数据库的并发问题
  • 脏读:对于两个事务T1,T2,T1读取了已经被T2更新但还没有被提交的字段,之后,若T2回滚,T1读取的内容就是临时且无效的。
  • 不可重复读:对于两个事务T1,T2,T1读取了一个字段,然后T2更新了该字段,之后,T1再次读取同一个字段,值就不同了
  • 幻读:对于两个事务T1,T2,T1从一个表格中读取了一个字段,然后T2在该表格中插入了一些新的行,之后如果T1再次读取同一个表,就会多出几行。

四种隔离级别
在这里插入图片描述
JDBC_3 数据库事物
java中的事务操作举例

        Connection connection = DriverManager.getConnection(url, user, password);
        //获取当前数据库的隔离级别
        System.out.println(connection.getTransactionIsolation());
        //设置数据库的隔离级别
        connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
        connection.setAutoCommit(false);
        String sql = "select user,password,balance = ? from user_table where user = ?";
        User user = getInstance(connection,User.class,sql,"CC");
        System.out.println();

        Connection connection = DriverManager.getConnection(url, user, password);

        connection.setAutoCommit(false);
        String sql = "update user_table set balance = ? where user = ?";
        update(connection,sql,5000,"CC");
        Thread.sleep(15000);
        System.out.println("修改结束");
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168964.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【目标检测】Labelme的改进——海量图片的自动标注「建议收藏」

    【目标检测】Labelme的改进——海量图片的自动标注「建议收藏」  深度学习一般需要对大量的图片进行标注,但是手动标注耗时耗力,所以模仿labelme软件的功能,使用程序对大批量的图片进行自动标注,大大减少手动操作。下面介绍如何实现对大批量的图片进行标注。自动标注的程序实现:https://github.com/shuyucool/Labelme.git程序内容均为原创,如果使用麻烦您点赞呀如遇疑问,欢迎随时交流,定尽量解答。联系方式:7819…

    2022年9月11日
  • rsyslogd_Syslog

    rsyslogd_Syslog最近遇到一个需求,需要把线上环境的debug日志及集中化收集起来,一方面是方便开发调试;一方面是避免直接到线上环境查看,存在安全隐患。常用可选方案:rsyslog发送端+rsyslo…

    2022年8月15日
  • 空间统计:Moran’s I(莫兰指数)

    空间统计:Moran’s I(莫兰指数)前两天聊了空间统计学里面的两个经典概念,今天来说说第一篇文章留下的大坑:Moran’sI。首先,Moran’sI这个东西,官方叫做:莫兰指数,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰(PatrickAlfredPierceMoran)(好长的名字,不过一般都简称为:帕克·莫兰,就是下图这位中年帅哥了),在1950年提出的。这一年,朝鲜战争爆发。莫兰同学1917…

    2022年6月25日
  • 解决touchStart滑动时触发点击事件「建议收藏」

    解决touchStart滑动时触发点击事件「建议收藏」由于我们在将点击事件委托到div,span,font,p等元素标签上时会导致移动端的ios设备无法识别这个点击事件(一般指click事件),此时我们一般会使用touchstart来替换click事件,但是使用touchstart来代替click事件的弊端就立刻显示出来,每当我们滑动屏幕时就会立刻出发点击事件此时加入我这个封装的方法,这个弊端就会迎刃而解functiontap(el,fn…

    2022年6月19日
  • 164. 可达性统计(拓扑排序+数位dp)[通俗易懂]

    164. 可达性统计(拓扑排序+数位dp)[通俗易懂]给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数 N,M,接下来 M 行每行两个整数 x,y,表示从 x 到 y 的一条有向边。输出格式输出共 N 行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:1633211111#include<bits/stdc++.h>using

    2022年8月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号