Java事务处理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

事务

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);
    }
}

内容不会被保存。


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6224159.html,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL Oracle 网络协议
7-java连接oracle-Oracle中的事务处理
了解7-java连接oracle-Oracle中的事务处理。
284 0
|
存储 SQL Java
java学习:数据增删改查、存储过程调用及事务处理
为了方便,先定义二个常量: package jmyang.utils; public class ConstDefine { /** * WebLogic服务器地址 */ public static final String WebLogi...
1110 0
|
17天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
71 1
|
17天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
65 1
|
1月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
93 0
|
1月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
134 16