首页 > 其他分享 >事务

事务

时间:2022-10-16 23:58:07浏览次数:43  
标签:事务 java money st import conn

事务

要么都成功,要么都失败

ACID原则

原子性:要么全部完成,要么都不完成

一致性:总数不变

隔离性:多个进程互不干扰

持久性:一旦提交不可逆,持久化到数据库了

 

隔离性的问题:

脏读:一个事务读取了另一个没有提交的事务

不可重复读:在同一个事务内,重复读取表中的数据,表数据发生了改变

虚读(幻读):在一个事务内,读取到了别人插入的数据,导致前后读出来结果不一致

代码实现

1、开启事务conn.setAutoCommit(false);

2、一组业务执行完毕,提交事务

3、可以在catch语句中显示的定义回滚语句,但默认失败就会回滚

package com.hua.lesson04;

import com.hua.lesson02.utils.JdbcUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestTransaction {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try {
            conn = JdbcUtils.getConnection();
            //关闭数据库的自动提交,自动会提交事务
            conn.setAutoCommit(false);//开启事务

            String sql1 = "update account set money = money -100 where name ='A'";
            st = conn.prepareStatement(sql1);
            st.executeUpdate(sql1);

            String sql2 = "update account set money = money +100 where name ='B'";
            st = conn.prepareStatement(sql2);
            st.executeUpdate(sql2);

            //业务完毕,提交事务
            conn.commit();
            System.out.println("成功!");
        } catch (SQLException throwables) {
            //如果失败,则默认回滚
//            try {
//                conn.rollback();//如果失败则回滚事务
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
            throwables.printStackTrace();
        }finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

 

标签:事务,java,money,st,import,conn
From: https://www.cnblogs.com/1982king/p/16797648.html

相关文章

  • 2022-10-16 Spring事务
    目录Spring事务Spring事务简介案例:银行账户转账需求分析结果分析实现Spring事务角色事务相关配置案例:转账业务追加日志实现事务传播行为Spring事务Spring事务简介事务......
  • 并行事务会引发什么问题?
    并行事务会引发什么问题?MySQL服务端是允许多个客户端连接的,这意味着MySQL会出现同时处理多个事务的情况。那么在同时处理多个事务的时候,就可能出现脏读(dirtyread)、不......
  • Spring Batch 事务限制
    对SpringBatch有所了解的同学都知道Batch是用来进行批量数据处理的。但是我们在同时使用SpringJPA的时候,尤其是循环数据处理的时候,我们希望能够尽快提交事务。......
  • Spring 数据处理中的事务级别
    在Spring项目中,如果使用了Spring的事务管理的话。默认的事务级别都在类,这个级别的,这就导致了,如果在循环中对数据进行处理的话,如果循环不结束,事务是不会提交的。如果......
  • Jedis(五大数据类型,事务)
    简介Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码测试联通打开window下的redis-server,1、新建一个普......
  • InnoDB存储引擎:事务
    认识事务概述事务:访问并更新数据库中各种数据项的一个程序执行单元。数据库引入事务的主要目的:事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时......
  • 数据库第十三次作业 事务管理【带源码】
    目录​​一、新建数据库​​​​二、事务的提交​​​​ 1.事务的隔离级别​​​​1.1脏读 ​​​​1.2演示脏读 ​​​​1.3设置b账户中事务的隔离级别 ​​​​1.4.验......
  • THINKPHP5 事务操作
    THINKPHP5事务操作使用事务处理的话,需要数据库引擎支持事务处理。比如MySQL的MyISAM不支持事务处理,需要使用 InnoDB 引擎。自动控制事务处理Db::transaction(functio......
  • MySQL事务隔离
    MySQL事务隔离该文摘抄自林晓斌老师的文章提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转100块钱,而此时你的银......
  • C#事务的使用
    https://blog.csdn.net/VisageNocturne/article/details/112094795http://t.zoukankan.com/SmilePastaLi-p-6824387.htmlhttps://www.w3xue.com/exp/article/20225/79298......