mysql的事务隔离级别和JDBC

# 隔离级别和面临的问题事务等级脏读不可重复读幻读
read uncommitted
read committedX
repeatable readXX
serializableXXX

事务的隔离级别越高,程序执行效率越低。

  • 脏读: 在一个事务中读取到了另一个未提交事务的数据,即为脏读

  • 不可重读读: 在一个事务处理过程中,另一个事物插入进来,并更新了数据,原先的事务前后两次相同的语句查询,结果不一样,即为不可重复读

  • 幻读: 在一个事物处理过程中,另一个事务插入进来,并更新了数据,此时原来的事务也插入数据,则实际上会受到后一个事务数据的影响,即为幻读。

-- 查询 mysql 事务隔离级别(5.7+)
SELECT @@transaction_isolation;
SET {SESSION | GLOBAL} TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE};

无论是 SESSION 还是 GLOBAL 级别,断开 MySQL 连接,下次再连接的时候,还是原来的事务隔离级别,因此彻底更新MySQL 事务隔离级别,需要修改 MySQL 配置文件

Linux 系统下 MySQL 配置文件位置为: /etc/my.conf

在 [mysqld] 标签下配置(在其他标签下设置无效,如果没有该标签则手动添加):

[mysqld]
transaction-isolation = READ-COMMITTED

在配置文件中设置的事务隔离级别为: READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALEZABLE,配置文件修改之后需要重启 MySQL 服务

MYSQL的JDBC

流程:

  1. 注册和加载驱动(可以省略)(导入mysql的jdbc的驱动库)(Class.forName(“com.mysql.jdbc.Driver”);)

  2. 获取连接

  3. Connection 获取 Statement 对象

  4. 使用 Statement 对象执行 SQL 语句

  5. 返回结果集

  6. 释放资源

DriverManager

静态方法描述
Connection getConnection(String url, String user, String password)通过连接字符串、用户名和密码获取数据库连接对象
Connection getConnection(String url, Properties info)通过连接字符串和属性对象获取连接对象

Conection接口

Connection 作用:
Connection 接口,具体的实现类由数据库的厂商实现,代表一个连接对象。

Statement 作用:

代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结果的对象。

方法描述
int executeUpdate(String sql)用于发送DML语句(增删改操作,如insert、update、delete),参数为SQL语句,返回值为对数据库影响的行数
ResultSet executeQuery(String sql)用于发送DQL语句(执行查询操作,如select),参数为SQL语句,返回值为查询的结果集

释放资源

ResultSet结果集:在使用完ResultSet后,需要调用其close()方法来释放资源。这是因为ResultSet对象通常会占用较多的资源(如数据库连接),及时释放可以避免资源泄漏和内存占用过高。

ResultSet rs = statement.executeQuery(“SELECT * FROM table_name”);
// 使用ResultSet
rs.close(); // 释放ResultSet资源
Statement语句:对于Statement对象,同样需要调用其close()方法来释放资源。Statement对象代表了一个已经编译过的SQL语句,执行完SQL后应当立即释放资源,以便释放相关的数据库和JDBC资源。

PreparedStatement 是 Statement 接口的子接口,继承于父接口中所有的方法。它是一个预编译的 SQL 语句
stament每次都会被数据库编译,而用preparestatement只需要编译一次,只将参数传入。
没有sql注入风险。

Statement statement = connection.createStatement();
// 使用Statement执行SQL操作
statement.close(); // 释放Statement资源
Connection连接:最后,在完成与数据库的交互后,也需要及时释放Connection连接资源。确保在不再需要连接时及时关闭,以便释放数据库连接池和其他资源,并防止资源泄露。

Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/db_name”, “username”, “password”);
// 使用Connection执行数据库操作
connection.close(); // 释放Connection资源

session和连接和事务的关系

一个session(会话)执行一个事务,每个连接可以创建多个会话,每个会话可以执行其自己的SQL语句,并且可以管理自己的事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-plus el-time-picker 时间段选择(可多选)

实现一个如图的时间段选择器 处理好时间回显逻辑&#xff0c;组件内[‘’,‘’],后端数据[{startTime:‘’,endTime:‘’}]处理好加和减的显示逻辑 <template><div><div v-for"(item, index) in currentChoose" :key"index" class"fl…

数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)

数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库&#xff08;20240507&#xff09;1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库&#xff08;20…

数据库表自增主键超过代码Integer长度问题

数据库自增主键是 int(10) unsigned类型的字段&#xff0c;int(M) 中 M指示最大显示宽度&#xff0c;不代表存储长度&#xff0c;实际int(1)也是可以存储21.47亿长度的数字&#xff0c;如果是无符号类型的&#xff0c;那么可以从0~42.94亿。 我们的表主键自增到21.47亿后&#…

信息系统项目管理基础

目录 一、项目管理概论 1、定义 2、项目管理的十二原则 3、SMART原则 4、项目经理 5、项目的生命周期 二、项目立项管理 1、项目启动过程 三、项目整合管理 1、管理基础 2、项目整合管理过程 ①制定项目章程 ②制定项目管理计划 ③指导与管理项目工作 ④管理项目…

谷歌AlphaFold 3首发Nature,预测精准度提高100%,AI能帮助治疗癌症和免疫病 | 最新快讯

刚刚&#xff0c;顶级科学期刊英国《Nature》&#xff08;自然&#xff09;杂志发表了一份重磅、突破性研究论文。 北京时间 5 月 8 日 23 点&#xff0c;谷歌 DeepMind 和其英国子公司 Isomorphic Labs 联合团队在《自然》杂志上发表一份共 46 页的重要成果&#xff0c;联合发…

计算图与自动微分

计算图与自动微分 一、自动梯度计算1.1 数值微分&#xff08;Numerical Differentiation&#xff09;1.2 符号微分&#xff08;Symbolic Differentiation&#xff09;1.3 自动微分&#xff08;Automatic Differentiation&#xff0c;AD&#xff09;1.3.1 计算图1.3.2 正向传播1…

Java Stream

1. Stream API概述 Java 8 Stream是Java 8中引入的一个新的API&#xff0c;用于处理集合和数组等数据结构的元素。它允许您在数据集上进行功能性操作&#xff0c;例如过滤、映射、排序等&#xff0c;而不需要编写循环或迭代器等底层代码。 Java 8 Stream与集合不同&#xff0c;…

动态表名 的使用方法

动态表名插件的底层是 拦截器 1&#xff0c;创建一个拦截器 Configuration public class MybatisConfiguration {Beanpublic DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {// 准备一个Map&#xff0c;用于存储TableNameHandlerMap<String, Table…

MySQL索引(聚簇索引、非聚簇索引)

了解MySQL索引详细&#xff0c;本文只做整理归纳&#xff1a;https://blog.csdn.net/wangfeijiu/article/details/113409719 概念 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。 索引分类 主键索引&#xff1a…

Conda安装rasterio报错

Conda安装rasterio报错 文章目录 Conda安装rasterio报错问题解决参考 问题 在conda环境中安装rasterio包之后&#xff0c;本来可以正常运行的&#xff0c;但是之后又重新安装了一个gdal&#xff0c;导致原来的引用rasterio的包的程序不可正常运行了 conda install rasterio c…

基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的民航网上订票系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

[附源码]石器时代_恐龙宝贝内购版_三网H5手游_带GM工具

石器时代之恐龙宝贝内购版_三网H5经典怀旧Q萌全网通手游_Linux服务端源码_视频架设教程_GM多功能授权后台_CDK授权后台 本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff0…

Ftp笑脸漏洞(VSFTPD 2.3.4)复现(后门漏洞)

Ftp笑脸漏洞&#xff08;VSFTPD 2.3.4&#xff09;复现&#xff08;后门漏洞&#xff09; 一、原理二、复现准备三、漏洞复现四、Metasploit利用脚本复现 一、原理 vsftpd 是“ very secure FTP daemon ”的缩写&#xff0c;安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类…

数学:人工智能领域的基石与灵魂

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到了我们生活的方方面面&#xff0c;从智能家居、智能医疗到自动驾驶、智能客服&#xff0c;AI无处不在。然而&#xff0c;当我们赞叹于AI的神奇时&#xff0c;却往往忽视了其背后的推动力——数学…

Go PDF文件操作

目录 介绍 安装 gofpdf API 代码示例 结果展示 介绍 gofpdf 是一个在 Go 语言中用于生成 PDF 文档的库。 安装 gofpdf 首先&#xff0c;你需要安装 gofpdf 库。你可以使用 go get 命令来安装它&#xff1a; go get github.com/jung-kurt/gofpdf API 功能 函数名参数解释示…

车载测试系列:自动驾驶中间件SOME/IP

一、以太网引入汽车 2004年&#xff0c;宝马汽车的OBD诊断口采用的是高速CAN总线&#xff0c;速率为500kbit/s&#xff0c;除去CAN协议本身的开销&#xff0c;通过OBD口升级控制器的净升级速度降到200kbit/s。预计到2008年&#xff0c;软件更新的数据量会达到1GB&#xff0c;按…

串口初始化自己独立的见解--第九天

1.SM0,SM1 我们一般用 8位UART&#xff0c;波特率可变 &#xff08;方式1的工作方式&#xff09; SCON &#xff1a;SM2 一般不用&#xff0c;SM0 0 ,SM1 1 PCON : 有两位 我们不动它&#xff0c;不加速&#xff0c;初始值 TMOD&#xff1a;8位自动重装定时器&#xff0…

如何自动(定时/间隔/重复)执行 同步文件、备份打包加密压缩文件

参考下列两个教程结合使用即可&#xff1a; 快捷自由定时重启、注销、关机 如何从多个文件夹内转移全部文件&#xff08;忽略文件夹的结构&#xff09;&#xff08;进行复制&#xff09;&#xff08;再打包&#xff09; 就是先设定好 勾选对 来源路径’Zip打包&#xff0c;并…

QT作业5

1、聊天室 服务器端 //头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QListWidget> #include <QMessageBox> #include <QDebug> #includ…