zoukankan      html  css  js  c++  java
  • Java 代码实现事物

    事务

    (一)事务的概念

    	事务是应用程序中一个完整的业务逻辑,(包含多个小的单元,每一个小的单元分别对数据库中的数据进行crud操作。)我们通过事务保证所有的小单元,要么同时成功,要么同时失败。也就是说事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
     
    事务的特性(ACID):
    	(1)原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
    	(2)一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
    	(3)隔离性(Isolation):隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,即多个并发事务之间互不影响。
    	(4)持久性(Durability):持久性是指一个事务一旦被提交了,那么对数据库中数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
    
    管理自定义事务的语句:
    	1. 手动开启事务:connection.setAutoCommit(false);
    	2. 成功提交:connection.commit();//失败回滚:connection.rallbock()
    

    (二)事务的实现

    ① 手动开启事务
    

    image

    ② 成功 提交
    

    image

    ③ 失败 回滚
    

    image

    java中控制事务

    package com.offcn.test;
    
    import com.offcn.util.JdbcUtils;
    import org.junit.Test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class TestTransaction {
    
        @Test
        public void test() throws SQLException {
            Connection connection = JdbcUtils.getConnection();
            PreparedStatement preparedStatement = null;
            try {
                //关闭自动提交
                connection.setAutoCommit(false);
                preparedStatement = connection.prepareStatement("update account set money = money + ? where name = ?");
                preparedStatement.setObject(1,500);
                preparedStatement.setObject(2,"张三");
                preparedStatement.executeUpdate();
                preparedStatement = connection.prepareStatement("update account set money = money - ? where name = ?");
                preparedStatement.setObject(1,500);
                preparedStatement.setObject(2,"李四");
                preparedStatement.executeUpdate();
                //程序没有问题,提交事务
                connection.commit();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
                //程序出问题了,回滚事务
                connection.rollback();
            }finally{
                preparedStatement.close();
                JdbcUtils.close();
            }
        }
    }
    
    
  • 相关阅读:
    线性筛2 筛约数个数
    背包板子
    线段树(指针板子)
    10.11 模拟赛(QBXT国庆Day3)
    10.6 体育成绩统计
    10.5 T3 DDP BZOJ 4712
    10.2模拟赛总结
    线性筛1
    CF165D Beard Graph
    2019 CSP-S第一轮(hsyz半日游)
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/15232267.html
Copyright © 2011-2022 走看看