您的位置:首页 > 房产 > 家装 > JDBC以及事务

JDBC以及事务

2025/1/11 3:53:39 来源:https://blog.csdn.net/qq_51321722/article/details/139592249  浏览:    关键词:JDBC以及事务

1、JDBC是什么?

        JDBC是Java DataBase Connectivity(Java语言链接数据库)

2、JDBC的本质

        JDBC是一套接口,有调用者(java工程师)和实现者(SUN公司)(实现类被称为驱动)之分,跟面向接口调用、面向接口写实现类,都属于面向接口编程

  • 为什么面向接口?
    • 解耦合:降低程序的耦合度,提高程序的扩展力;

3、关系

4、JDBC编程6步

- 第一步:注册驱动(作用:告诉Java程序,即将要链接的是哪个品牌的数据库)(DriverManager接口)- 第二步:获取连接(表示JVM的进程与数据库的进程打开了,这属于进程之间的通信,使用完后一定要关闭)(Connection接口)- 第三步:获取数据库操作对象 (专门执行sql语句的对象)(Statement接口、PreparedStatement接口)- 第四步:执行SQL语句(主要是DML DQL)- DML(数据操作语言): insert、delete、update,对表中的数据进行增删改- 第五步:处理查询 结果集(只有第四部执行的是select语句时,这一步才会执行)(ResultSet接口)- 第六步: 释放资源(使用完之后一定要关闭资源,Java和数据库属于进程间的通信,开启之后一定要关闭)(close)

 5、JDBC事务

  •  什么是事务
    • 事务是数据库提供的一个特性
    • 事务:组成各个数据的(最小)执行单元,要么都成功,要么都失败
    • 我们使用一个例子来说明:以转账为例
      • * 转账的功能,冠希给美美转1000元钱。    
        * 使用事务    
        * 	先给冠希扣除掉1000元        
        * 	再给美美加上1000元        
        * 事务结束了
      •  在MYSQL中操作
        • create table t_account(    
          id int primary key auto_increment,        
          username varchar(20),        
          money double        
          );--两种方式,第一种:使用命令的方式
          start transaction;		--开启事务
          update t_account set money = money ‐ 1000 where username = '冠希';
          update t_account set money = money + 1000 where username = '美美';
          commit;					--提供事务(事务已经结束了,数据永久的保存到数据库中了)
          rollback;				--回滚事务(事务已经结束了,数据回滚到最初始化的状态)--第二种方式:设置MySQL事务不默认提交的方式
          --MySQL数据库的事务是默认提交的。
          update t_account set money = money ‐ 1000 where username = '冠希';   --默认使用了一个事务
          --设置让MySQL的数据库的事务不默认提交
          set autocommit = off或者0
          --编写SQL语句(执行完,都没有提交)
          sql1
          sql2
          --手动提交和回滚
          commit;
          rollback;
  •  事务的特性
    • 原子性
      • 表示事务中所有操作是不可再分割的原子单位
    • 一致性
      • 事务执行前后数据需要保证一致
    • 隔离性
      • 多个事务同时操作一条记录,事务之间不能互相干扰
    • 持久性
      • 事务一旦结束了,数据将永久的保存到数据库中
  • 事务的隔离
    • 不考虑隔离性所引发的问题
      • 1、脏读:一个事务读取到了另一个事务未提交的数据
        2、不可重复读:一个事务读取到了另一个事务提交的数据,导致了多次查询的结果不一致。强调的是update,修改记录的数据。
        3、虚度(幻读):一个事务读取到了另一个事务提交的数据,导致了多次查询的结果不一致。强调是insert,向表中添加一条数据。
    •  设置隔离级别
      • 事务的隔离级别
        • Read uncommitted		--读未提交,什么都解决不了
          Read committed			--读已提交,避免脏读,但是不可重复读和虚读有可能产生
          Repeatable read			--可重复度,避免脏读和不可重复读,虚度有可能产生的(mysql默认)
          Serializable			--串行,避免各种读(当有一个事务的级别达到此时就会上锁,另一个就不再允许                                                                                    执行任何修改操作,以此达到避免各种问题的目的)

           

      •   4中隔离的安全性和效率
        • 安全		Serializable > Repeatable read > Read committed > Read uncommitted
          效率		Serializable < Repeatable read < Read committed < Read uncommitted

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com