- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13天事务与连接池分析
明天第13天 事务与连接池
【教学内容】
事务
事务介绍
Mysql中的事务
Jdbc中事务
事务特性
事务的隔离级别与问题
演示设置隔离级别来解决问题
事务案例-转账汇款
事务案例-使用ThreadLocal解决转账汇款问题
连接池
连接池介绍
Dbcp连接池
C3p0连接池
Tomcat内置连接池
案例-使用事务与连接池完成注册操作分析
案例-使用事务与连接池完成注册操作实现
【教学总结】
【第一阶段】
【学习目标】
【内容:事务】
事务介绍
什么是事务
事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。这些单元要么全都成功,要么全都不成功。
事务在开发中的作用
下面我们来举例说明什么是事务,如下所示:
现实生活中的银行转账业务,张三要给李四转账1000元,而在程序员眼中两条SQL语句就可以搞定,如下:
给张三的账户减去1000元;
给李四的账户加上1000元;
如果在转账的业务中,成功的将张三的账户减去1000元,而在给李四的账户加1000元的时候,程序出现了问题,李四的账户没有加上1000元,而张三的账户却减掉了1000元,在现实生活中,这种情况肯定是不允许存在的。当我们将这个转账业务放在一个事务中,就不会出现以上情况了。
事务中有多个操作,这些操作要么全部成功,要么全部失败,也就是说给张三的账户减去1000元如果成功了,那么给李四的账户加上1000元的操作也必须是成功的,否则给张三减去1000元,以及给李四加上1000元都必须是失败的
Mysql中的事务
Mysql中默认事务处理
show variables like %commit%; ---- autocommint 值是 on,说明开启自动提交
mysql数据库默认是开启事务的,一条sql一个事务.
oracle它默认情况下autocommit是off,就需要手动提交事务.
关闭 mysql的自动事务处理
关闭自动提交 set autocommit = off / set autocommit = 0
如果设置autocommit 为 off,意味着以后每条SQL 都会处于一个事务中,相当于每条SQL执行前 都执行 start transaction
Mysql中手动事务处理
start transaction 开启事务
commit; 提交事务
rollback; 事务回滚
Jdbc中事务
Jdbc中事务处理API
java.sql.Connection接口中提供了关于事务操作的API
setAutoCommit(boolean flag); setAutoCommit(false)相当于start transaction
commit(); 事务提交
rollback(); 事务回滚
回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为
回滚点介绍
Savepoint setSavepoint(String name)
在当前事务中创建一个具有给定名称的保存点,并返回表示它的新 Savepoint 对象。
例如:
Savepoint sp = conn.setSavepoint();
Conn.rollback(sp);
事务特性
事务的四大特性是面试官经常问的问题,简称ACID(Atomicity Consistency Isolation Durability),分别是:
原子性:原子性对应的英文是Atomicity,即表示事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败;
一致性:一致性对应的英文是Consistency,事务执行后,数据库状态与其它业务规则保持一致。例如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的;
隔离性:隔离性对应的英文是Isolation,是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰;
持久性:持久性对应的英文是Durability,指的是一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。
不同的事务,其一致性的表现形式是不同的,事务的其他三大特性其实都是为了事务的一致性服务的。
事务的隔离级别与问题
不考虑隔离性产生的问题介绍
脏读 一个事务读取到了另一个事务未提交数据.
不可重复读 一个事务内,两次读取到的数据不一致.(update)
虚读(幻读) 两次读取的数据不一致(insert)
事务的四种隔离级别介绍
数据库内部定义了四种隔离级别,用于解决三种隔离问题
1 Serializable:可避
文档评论(0)