JDBC事务

  • 时间:2017-07-31
  • 分类:数据库/系统
  • 424 人浏览
[导读]事务概述事务指的是逻辑上的一组操作多条sql语句,组成这组操作的各个单元要么全都成功,要么全都失败.事务的作用保证在一个事务中多次操作要么全都成功,要么全都失败

事务概述
事务指的是逻辑上的一组操作(多条sql语句),组成这组操作的各个单元要么全都成功,要么全都失败.

事务的作用
保证在一个事务中多次操作要么全都成功,要么全都失败.

mysql事务操作
Connection接口中有和事务有关的方法:
  void setAutoCommit(boolean autoCommit) 将此连接的自动提交模式设置为给定状态。
  autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用自动提交模式
  要把autoCommit设置为false,让事务手动开启
  void commit() 如果多条sql都执行成功,提交事务
  void rollback() 有一条sql执行失败,就回滚事务,把数据回滚到开启事务之前的状态

代码实现

 事务的特性

原子性:强调事务的不可分割.多条语句要么都成功,要么都失败。
一致性:强调的是事务的执行的前后,数据要保持一致.
隔离性:一个事务的执行不应该受到其他事务的干扰.
持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库.

如果不考虑事务的隔离性,引发一些安全性问题
 脏读:一个事务读到另一个事务还没有提交的数据.
脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的
 不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致在当前的事务中多次查询结果不一致.
 虚读/幻读 :一个事务读到另一个事务已经提交的insert的数据,导致在当前的事务中多次的查询结果不一致.

解决引发的读问题
设置事务的隔离级别:级别超高,越安全,效率越低。
1 read uncommitted :未提交读.脏读,不可重复读,虚读都可能发生.
2 read committed :已提交读.避免脏读.但是不可重复读和虚读有可能发生.(Oracle默认)
4 repeatable read :可重复读.避免脏读,不可重复读.但是虚读有可能发生.(MySql默认)
8 serializable :串行化的.避免脏读,不可重复读,虚读的发生.

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!
标签: JDBC 事务