数据库事务集合
数据库事务集合1.事务概述数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执 行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更 新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误 恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、 隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务 的处理。 事务开始于 - 连接到数据库上,并执行一条DML语句insert、update或delete - 前一个事务结束后,又输入了另一条DML语句 事务结束于 - 执行commit或rollback语句。 - 执行一条DDL语句,例如create table语句,在这种情况下,会自动执行commit语句。 - 执行一条DDL语句,例如grant语句,在这种情况下,会自动执行commit。 - 断开与数据库的连接 - 执行了一条DML语句,该语句却失败了,在这种情况中,会为这个无效的DML语句执行rollback语 句。 2.事物的四大特点(重点!)(ACID) - actomicity(原子性) 表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败 - consistency(一致性) 表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前状态 - isolation(隔离性) 事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修 改它之后的状态,事务不会查看中间状态的数据。 - durability(持久性) 持久性事务完成之后,它对于系统的影响是永久性的。
1.原子性:就是begin开始一个事务后,在commit或rollback前时全部是一个整体,要全部都完成执行才能进行提交---->>>原子性也就是所有是一个整体
2.一致性:事物中有错误的操作所有其他语句不能执行要执行回滚(可能和原子性很像,注意区别开)
3.隔离性:不赘述
4.持久性:提交事务后不可逆操作 3.事务在java中的应用如果JDBC连接处于自动提交模式,默认情况下,则每个SQL语句在完成后都会提交到数据库。 事务使您能够控制是否和何时更改应用于数据库。它将单个SQL语句或一组SQL语句视为一个逻辑单 元,如果任何语句失败,则整个事务将失败。 要启用手动事务支持,而不是JDBC驱动程序默认使用的自动提交模式,请使用Connection对象的 setAutoCommit()方法。如果将boolean false传递给setAutoCommit(),则关闭自动提交。我 们可以传递一个布尔值true来重新打开它。
connection就相当于数据库操作中打开了一个事务的连接 //事务进行是否自动提交的设置 conn.setAutoCommit(false); //进行事务的提交和事务回滚 conn.commit(); conn.rollback();4.示例
此示例中包含了事务的一个批处理Batch
思路是一样的,先将预状态通道中的sql语句添加到批处理中进行就绪等待
等待调用预状态通道执行executeBatch()是开始进行批处理更新数据
之后返回一个int型的状态码数组--->>>产生改变的数据库行数
注意:添加到batch中后执行一定是进行Batch,而不是代码中注释的一行错误示范 package com; import java.sql.*; /** * @Author: fyw * @Description: * @Date Created in 2021-08-29 20:39 * @Modified By: */ public class Demo06 { public static void main(String[] args) { PreparedStatement preparedStatement = null; ResultSet resultSet = null; Connection connection = null; //1. 加载驱动类 try { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mode05-05?serverTimezone=UTC"; String userName = "root"; String passWord = "123456"; //2. 获得连接 connection = DriverManager.getConnection(url, userName, passWord); connection.setAutoCommit(false); //3. 定义sql语句,创建状态通道,进行sql语句的发送 String sql = "insert into `mode05-05`.teacher(tname)values(?)"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,"张三a"); preparedStatement.addBatch(); preparedStatement.setString(1,"张三b"); preparedStatement.addBatch(); preparedStatement.setString(1,"张三c"); //System.out.println(5/0); preparedStatement.addBatch(); preparedStatement.setString(1,"张三d"); preparedStatement.addBatch(); //int i = preparedStatement.executeUpdate();//只能执行一条语句 int[] ints = preparedStatement.executeBatch(); //pps.executeBatch(); //执行的是批处理中的所有语句,进行一个全部执行 for(int t:ints){ System.out.println(t); } connection.commit(); } catch (Exception e) { try { connection.rollback(); } catch (SQLException throwables) { throwables.printStackTrace(); } e.printStackTrace(); } finally { try { if (resultSet != null) { resultSet.close(); } //5. 关闭资源 if (preparedStatement != null) { preparedStatement.close(); } if (connection != null) { connection.close(); } } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
为什么专升本那么难,我的经历希望可以给你一些帮助选择专升本是我人生至此为数不多且十分重要的选择,同大多数专升本的同学一样,我从最开始的信心满满,意气风发到后来的茫然无措,漫漫前路不知何处归途,到最后的破釜沉舟背水一战,每一次情感
为什么自律那么难,我的经历总结希望对你有所帮助懒惰拖延不自律,主要有4个原因外界太多的诱惑压力带来的恶性循环对未来形势的乐观估计挫败感带来的心理负担改变懒散拖延而变得自律,这里给你5点建议1要学会拒绝诱惑大部分人的意志力都是薄
企业对于网络危机公关处理,有哪些方式大家好,我是只为用户提升品牌价值的时代达信互联网发展,现在很多信息都可以通过媒体平台查看,像我们平时经常看到一些热点信息,这些信息当中有艺人企业,信息包含好与不好,对于一家上市企业
换手率的背后股票买卖就有成交额,成交额是股价成交量的积。日换手率是日成交股数与总股本的占比。通过换手率要知道资金的意图。换手率在35之间,一般是主力正在吸筹建仓,这时股价在低位,可以加自选关注
看起来像个笑话看到一个人的卖房与买房的事。如下2015年,我忙卖了唯一一套房子,面积108平米,单价8900,拿到手96万。买家是个外地人,买了房暂时不住,要出租。我们卖了房要再租房子,所以直接
我的爱国情怀七十年代初,出生在北方农村,七八岁时候放的电影都是战争题材,喜欢军装喜欢枪械,梦想着长大参军成为一名军人,好威风!上了中学,学习历史知道,尤其近代,我国饱受列强欺凌,割地赔款,人民
硬核ampampquot霸座ampampquot惹不起,全凭GPDP2Max,站着也能把方案改完今天,一条女子带着2个孩子躺在硬座上睡觉,遭到旅客质疑霸座。该女子不仅不让座,还甩手亮出6张车票的新闻刷了屏。看了这条新闻,很无奈,很佩服人家的神操作和钱包。广大网民的意见,总结了
贝壳王子无线蓝牙耳机体验平民价格王子享受自从苹果发售了AirPods后,无线蓝牙耳机俨然成了一个行业,甭管是声学产品老厂商还是耳机界的新兵,都纷纷推出自己的TWS蓝牙耳机,这些耳机价格有高有低。今天,就跟大家分享一款属于
闭关15天整理的linux文本处理和正则表达式学习资料闭关了15天,终于把文本处理工具和正则表达式的内容整理完了,今天分享给大家。本文将详细讲解1文本编辑工具之神VIM2各种文本工具3基本正则表达式和扩展正则表达式4文本处理三剑客之g
手把手教你企业级调度器LVS,带你实现负载均衡简单来说集群就是一群服务器合作做同一件事。随着互联网用户量越来越大,业务计算越来越复杂,对服务器的要求也越来越高。单台服务器很难单独去应对大量的需求,所以就需要通过集群,去实现服务
看完这篇,还学不会Nginx,我倒立洗头!(建议收藏)Nginx是一款轻量级的Web服务器反向代理服务器,由于其稳定性丰富的模块库灵活的配置和低系统资源的消耗而得到国内外互联网公司的一致认可。Nginx可以做web服务负载均衡(反向代