• Java事务处理


    事务

    1.原子性

    事务是应用中不可再分的最小逻辑执行体

    2.一致性

    事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态

    3.隔离性

    各个 事务的执行不干扰

    4.持续性

    事务一旦提交,对数据库所做的任何改变都记录到永久存储器中,即保存到了物理数据库

    Java中的事务

    package ch13;
    import java.sql.*;
    
    /**
     * Created by Jiqing on 2016/12/26.
     */
    public class TransactionTest {
        private String driver;
        private String url;
        private String user;
        private String pass;
        // 初始化参数
        public void initParam() {
            driver = "com.mysql.jdbc.Driver";
            url    = "jdbc:mysql://127.0.0.1:3306/test";
            user   = "root";
            pass   = "123456";
        }
    
        public void insertInTransation(String[] sqls) throws Exception {
            // 加载驱动
            Class.forName(driver);
            try (
                    Connection conn = DriverManager.getConnection(url,user,pass)) {
                // 关闭自动提交
                conn.setAutoCommit(false);
                try(
                        // 使用Connection来创建一个Statement
                        Statement stmt = conn.createStatement()) {
                        for (String sql : sqls) {
                            stmt.executeUpdate(sql);
                        }
                }
    
                // 回滚
                // conn.rollback();
    
                // 提交事务
                conn.commit();
            }
    
    
        }
    
        public static void main(String[] args) throws Exception {
            TransactionTest tt = new TransactionTest();
            tt.initParam();
            String[] sqls = new String[] {
                    "insert into student values('1','Li')",
                    "insert into student values('2','Zhao')",
                    "insert into student values('3','Ji')"
            };
            tt.insertInTransation(sqls);
        }
    }
    
    

    增加回滚

    package ch13;
    import java.sql.*;
    
    /**
     * Created by Jiqing on 2016/12/26.
     */
    public class TransactionTest {
        private String driver;
        private String url;
        private String user;
        private String pass;
        // 初始化参数
        public void initParam() {
            driver = "com.mysql.jdbc.Driver";
            url    = "jdbc:mysql://127.0.0.1:3306/test";
            user   = "root";
            pass   = "123456";
        }
    
        public void insertInTransation(String[] sqls) throws Exception {
            // 加载驱动
            Class.forName(driver);
            try (
                    Connection conn = DriverManager.getConnection(url,user,pass)) {
                // 关闭自动提交
                conn.setAutoCommit(false);
                try(
                        // 使用Connection来创建一个Statement
                        Statement stmt = conn.createStatement()) {
                        for (String sql : sqls) {
                            stmt.executeUpdate(sql);
                        }
                }
    
                // 回滚
                conn.rollback();
    
                // 提交事务
                conn.commit();
            }
    
    
        }
    
        public static void main(String[] args) throws Exception {
            TransactionTest tt = new TransactionTest();
            tt.initParam();
            String[] sqls = new String[] {
                    "insert into student values('4','Qian')",
                    "insert into student values('5','Sun')",
                    "insert into student values('6','Liu')"
            };
            tt.insertInTransation(sqls);
        }
    }
    
    

    内容不会被保存。

  • 相关阅读:
    内存溢出常见原因分析
    内存溢出,与内存泄露
    ping不通linux服务器排查
    内存,缓存,cpu,硬盘关系
    cpu 基础知识
    sql查询以及常见问题理解解析
    月入一万,活在北京 (zz)
    超越信息和通讯 迎接新一轮数字化变革 (转载)
    The specified DSN contains an architecture mismatch between the Driver and Application (zz.IS2120@B)
    Excel .xls文件导入、导出 的例子
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/6224159.html
Copyright © 2020-2023  润新知