发表于: 2018-03-27 21:05:23

1 552


今天完成的事情

1.完成对事务处理连接池概念的学习并练习JDBC部分

事务处理简单说就是让sql增删改查语句要么全部成功要么全部失败的一种方法不会发生后边的操作失败前边的操作却已经改变数据库的情况我们平时删除文件时给我们确认删除的提醒就是这种情况

事务是保证底层数据完整的重要手段没有事务支持的数据库应用那将非常脆弱

事务

是由一步或几步数据库操作序列组成的逻辑执行单元这系列操作要么全部执行要么全部放弃执行

一段程序中可能包含多个事务

 

事务的四个特性

    原子性——事务时应用中最小的隔离单元时不可再分的最小逻辑执行体

    一致性——事务执行的结果让数据库保持一致性从一个一致性状态变到另一个一致性状态

    隔离性——各事务的执行互不打扰我的操作过程对你时隔离的

    持续性——事务一旦提交对数据做的改变会记录到永久存储器通常时保存进物理数据库

 

数据库的事务由下列语句组成

    一组DML语句

    一条DDL语句——会导致事务立即提交

    一条DCL语句——同上

 

事务的操作全部成功执行后应提交(commit)事务使这些修改永久生效

    显性提交使用commit

    自动提交执行DDLDCL语句或者程序正常推出

事务中的任何一个数据库操作失败后要执行回滚(rollback)事务

    显示回滚:rollback

    自动回滚系统错误或者强行退出

 

MySQL默认时关闭事务的即打开自动提交

要开启MySQL的事务支持可以显示调用如下命令

SET AUTOCOMMIT = (0 | 1)  //0为关闭自动提交也就是开启事务

 

当我们不想回滚全部事务的时候可以用savepoint设置事务的中间点

可以让事务回滚到中间点

在版本更新出现问题的时候可以回滚到我们想要回到的版本

savepoint a;     //设置中间点

rollback to a;   //回滚到指定中间点

 

 

JDBC的事务支持

JDBC连接的事务由Connection提供,Connection默认打开自动提交即关闭事务

可以调用Connectioncommit()方法来提交事务

conn.commit();

调用Connectionrollback()方法来回滚事务

conn.rollback();

 

Connection遇到一个未处理的SQLException异常时系统将会非正常退出事务也会回滚

但如果程序捕获了该异常则需要在异常处理块中显式地回滚事务

 

Connection的设置中间点调用方法setSavepoint()

Savepoint setSavepoint();    在当前事务中创建一个未命名的中间点

Savepoint setSavepoint(String name);    常见一个有指定姓名的中间点

rollback(Savepoint savepoint);    该方法回滚到指定中间点

 

 

使用连接池管理连接

数据库连接的建立及关闭是极耗费系统资源的操作十分影响系统性能

我们通过DriverManager获取连接每次操作都打开一个物理连接使用完后立即关闭连接

这种频繁的打开关闭连接将造成系统性能的低下

 

数据库连接池的解决方案

    当应用程序启动时系统主动建立足够的数据库连接并将这些连接组成一个连接池

    每次应用程序请求数据库连接时无须重新打开连接而是从连接池中取出已有的连接使用

    使用完后不关闭数据库连接而是还给连接池

    从而大大提高程序的巡行效率

类似于我们平时图书馆借书还书而不需要去新买书和处理书

 

 

明天计划的事情

1.开始学习MyBatis

遇到的问题

 

收获

1.对事务处理和连接池更明白了

2..try-with-resources语句好处就是i使用的资源可以自动释放

y-with-resources语句是一种声明了一种或多种资源的try语句资源是指在程序用完了之后必须要关闭的对象。try-with-resources语句保证了每个声明了的资源在语句结束的时候都会被关闭

任何实现了java.lang.AutoCloseable接口的对象和实现了java.io.Closeable接口的对象都可以当做资源使用

在使用事务时不能使用try-with-resources语句因我们不让它自动结束事务

2.使用预编译和不使用预编译插入多条SQL语句可以明显的看出预编译的性能优化情况

在多次使用同一条SQL语句时,使用预编译,其实就是SQL语句和参数的分离,通过多次传参,然后一次执行。

 



返回列表 返回列表
评论

    分享到