JSBC事物管理

一.事物
1.概述:事务指逻辑上的一组操作,组成这组操作的单元要么全部成功,要么全部失败

2.作用:保证一组操作全部成功或者失败

3.MYSQL进行事务管理
  (1)自动事务(mysql默认):一句sql语句就是一个事务(自动生效了)
  (2)手动开启一个事务
    1)start transaction;开始事物
    2)commit;提交
    3)rollback;回滚
  (3)查看MYSQL中事务是否自动提交:show variables like '%commit%';
  (4)设置自动提交的参数为OFF:set autocommit = 0;-- 0:OFF  1:ON

二.JDBC中的事物管理
1. connection对象的API
  (1)connection.setAutoCommit(boolean autoCommit);true:自动提交;false:不自动提交(开启事物,手动控制)
  (2)connection.rollback() ;回滚
  (3)connection.commit();提交

2.DBUtils实现事务管理
  (1)没有事物(事物自动提交)
    1)QueryRunner(DataSource ds) 此构造有传递连接,使用sql方法时无需添加conn对象。自动提交事务
    2)query(String sql, Object[] params, ResultSetHandler<T> rsh)
    3)update(String sql, Object... params)
  (2)有事物(手动控制)
    1)QueryRunner() :此构造没有传递连接,使用sql方法时需要给方法添加conn对象。手动提交事务时使用
    2)query(Connection,String sql, Object[] params, ResultSetHandler<T> rsh)
    3)update(Connection,String sql, Object... params)

三.事物总结
1.事务的特性
  (1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生
  (2)一致性(Consistency)事务前后数据的完整性必须保持一致
  (3)隔离性(Isolation)事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离
  (4)持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

2.如果不考虑隔离性,会引发下面的问题
  (1)脏读:指一个事务读取了另外一个事务未提交的数据
  (2)不可重复读:在一个事务中,两次查询的结果不一致(针对的是 update操作)
  (3)虚读(幻读):在一个事务中,两次查询的结果不一致(针对的是 insert操作)

3.可以通过设置事物隔离级别解决读的问题
  (1)read uncommitted:读未提交----最低级别,以上情况问题都不能避免
  (2)Read committed:读已提交----可避免脏读情况发生(oracle默认)
  (3)Repeatable read:可重复读----可避免脏读、不可重复读情况的发生,不可以避免虚读(mysql默认)
  (4)Serializable:串行化----可避免脏读、不可重复读、虚读情况的发生  

4.设置事物隔离级别
set session transaction isolation level 隔离级别 ;

5.查询当前事务隔离级别select @@tx_isolation;

6.隔离级别:Serializable>repeatable read > read committed > read uncommitted

7.执行效率:Serializable<repeatavle red < read committed < read uncommitted

 

转载于:https://my.oschina.net/u/3055497/blog/1819246

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值