JDBC 尚硅谷 事务、DAO、连接池、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

posted @   LinxhzzZ  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示