首页 > 其他分享 >JDBC 尚硅谷 事务、DAO、连接池、DBUtils(下篇)

JDBC 尚硅谷 事务、DAO、连接池、DBUtils(下篇)

时间:2022-10-05 16:35:19浏览次数:56  
标签:事务 JDBC 数据库 DAO T2 T1 DBUtils 连接 连接池

days03


12. Druid(德鲁伊)数据库连接池连接方式、配置文件,详见尚硅谷JDBC_P44

1. 事务

  内涵:一组逻辑操作单元,使数据从一种状态变换到另一种状态(一个或多个DML操作);

  原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。

     当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;

     要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态

2. 哪些操作会导致数据自动提交(提交后不可回滚)

  • DDL 操作:下述取消的方式对 DDL 操作失效;
  • DML 操作(增删改查):可以设置 autocommot = false 的方式,取消自动提交;
  • 默认关闭连接时,会自动提交数据;

3. 如果执行完程序时,Connection 没有被关闭,还可能被重复使用,则需要恢复其自动提交状态

 setAutoCommit(true),尤其是在使用数据库连接池技术时,执行close()方法前,建议恢复自动提交状

4. 事务的ACID属性

  1. 原子性(Atomicity) 指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  2. 一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
  3. 隔离性(Isolation) 指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  4. 持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

5. 并发与四种隔离级别

  数据库的并发问题

    • 脏读: 对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段。之后, 若 T2 回滚, T1读取的内容就是临时且无效的。
    • 不可重复读: 对于两个事务T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段。之后, T1再次读取同一个字段, 值就不同了。
    • 幻读: 对于两个事务T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行。之后, 如果 T1 再次读取同一个表, 就会多出几行

  四种隔离级别

    Oracle 默认的事务隔离级别为: READ COMMITED 。

    Mysql 默认的事务隔离级别为: REPEATABLE READ。

    

    隔离级别越高, 数据一致性就越好, 但并发性越弱。

6. Java代码设置隔离级别

  ① 获取当前隔离级别:Connection.getTransactionIsolation();

  ② 设置数据库的隔离级别:Connection.setTransactionIsolation(Connection.xxxxx);

7. 对于某张表的操作规范

  ① 定义 xxx表的接口规范 xxxxDAO 接口,声明各个接口的参数、作用等;

  ② 提供 xxx表的具体实现类,命名为 xxxxDAOImpl


8. 数据库连接池

  

 

  ① 数据库连接池的基本思想:就是为数据库连接建立一个“缓冲池”。

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

  ② 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个

9. 数据库连接池技术的优点

  资源重用:由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。

       在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性。

  更快的系统反应速度:数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于连接池中备用。此时连接的初始化工作均已完成。

            对于业务请求处理,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,减少了系统的响应时间

  新的资源分配手段:对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置;

           实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有的数据库资源

  统一的连接管理,避免数据库连接泄漏:在较为完善的数据库连接池实现中,可根据预先的占用超时设定,强制回收被占用连接;

                    从而避免了常规数据库连接操作中可能出现的资源泄露。

10. C3P0 数据库连接池连接方式、配置文件,详见尚硅谷JDBC_P41

11. DBCP 数据库连接池连接方式、配置文件,详见尚硅谷JDBC_P42

标签:事务,JDBC,数据库,DAO,T2,T1,DBUtils,连接,连接池
From: https://www.cnblogs.com/LinxhzZ/p/16755303.html

相关文章

  • 通过JDBC进行简单的增删改查(以MySQL为例)
    目录前言:什么是JDBC一、准备工作(一):MySQL安装配置和基础学习二、准备工作(二):下载数据库对应的jar包并导入三、JDBC基本操作(1)定义记录的类(可选)(2)连接的获取(3)insert(4)upda......
  • Spring 项目启动测试的时候错误:Unable to acquire JDBC Connection
    我们在使用SpringJPA测试项目启动的时候,得到下面的错误:UnabletoacquireJDBCConnection  问题和解决出现这个问题的主要原因是我们在资源文件夹中还有一个......
  • 解决mybatis自动生成dao层时无法准确找到生成的实体类
    解决mybatis自动生成dao层时无法准确找到生成的实体类在generatorConfig.xml配置文件中,将url改为connectionURL="jdbc:mysql://localhost/mybatis?nullCatalogMeansCurre......
  • JavaSpring的jdbcTemplate事务
    1、使用JdbcTemplate需要引入的依赖(spring的maven项目)<!--jdbcTemplate实现jar--><dependency><groupId>org.springframework</groupId><artifactId>spring......
  • JavaWeb--数据库连接池,SpringJDBC
    JavaWeb--数据库连接池,SpringJDBCJavaWeb--数据库连接池概述其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,......
  • Spring-JdbcTemplate实现数据库增、删、改、查
    一、先在mysql创建好一个数据库二、使用JdbcTemplate需要引入的依赖(spring的maven项目)<!--jdbcTemplate实现jar--><dependency><groupId>org.springframework<......
  • Loading class `com.mysql.jdbc.Driver`. This is deprecated.
    Driver包名变动报错信息:Loadingclasscom.mysql.jdbc.Driver.Thisisdeprecated.Thenewdriverclassiscom.mysql.cj.jdbc.Driver.Thedriverisautomaticallyr......
  • JDBC
    概念:JDBC(JavaDataBaseConnectivity):Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。通过JDBC技术与数据库进行......
  • JDBCUtil
     importjava.io.File;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.Date;importjava.sql.DriverManager;importjava.sql.PreparedState......
  • spring-dao.xml
    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......