0
点赞
收藏
分享

微信扫一扫

数据库-事务:

小黑Neo 2022-02-25 阅读 188

事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全部执行,要么全部失败!!!

数据库开启事物的命令:Connection接口下面的方法!!

Connection接口下面的方法:

1、void setAutoCommit(boolean autoCommit);

                autoCommit - 为 true 表示启用自动提交模式;

                为 false 表示禁用自动提交模式(默认情况下就是true)

2、void commit();手动提交事物。

3、void rollback();回滚(出现异常的时候,所有已执行成功的代码需要回退到事务开始前的状态)

默认情况下,Connetion对象处于自动提交模式下,这意味着他在执行每个语句后都会自动提交更改。如果禁用自动提交模式,那么提交更改就必须显示调用commit方法,否则就无法保存数据库的更改。

结束事物:commit或rollback

COMMIT 表示提交,即事务中的多条 SQL 语句所更改的数据会持久化到数据库中。

ROLLBACK 表示回滚,即回滚到事务的起点,将之前所做的所有操作撤销。

ROLLBACK 可以结束事务,但不代表会将数据持久化到数据库中,而只有 COMMIT提交才可以将数据持久化到数据库中。

private Connection conn = null;
private PreparedStatement ps = null;
try {
conn.setAutoCommit(false); //将自动提交设置为false
ps.executeUpdate("修改SQL"); //执行修改操作
ps.executeQuery("查询SQL"); //执行查询操作
conn.commit(); //当两个操作成功后手动提交
} catch (Exception e) {
conn.rollback(); //一旦其中一个操作出错都将回滚,使两个操作都不成功
e.printStackTrace();
}

事务(transaction)四个基本特性或ACDI特定!!!

1、Atomicity(原子性):一个事务(transaction)中的所有操作,全部完成,或者全部不完成,不会结束在中间某个环节,只执行一部分的操作。

        事务在执行过程中如果发生错误,会被回滚(rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割,不可约减

2、Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。

3、Isolation(隔离性):数据库允许多个并发事物对其进行读写和修改的功能,隔离性可以防止事务并发执行时由于交叉执行而导致数据的不一致。

        事务隔离分为不同级别:包括未提交读(Read unconmmitted)、提交读(read commited)、可重复读(repeatable read)和串行化(Serializeable)。

4、Durability(持久性):事务处理结束后,对数据的修改就是永久的,系统故障也不会丢失

Spring的事务传播特性(属性)!:

事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启一个新的事务。

Propagation的属性

  • REQUIRED:如果存在一个事务,则支持当前事务,如果没有事务则开启事物(原来就有使用的事务,没有就创建事务,一般Service中的更新类使用的操作)
  • SUPPORTS:如果存在一个事务,则支持当前事务,如果没有事务,则非事务的执行(原来就有事务,就使用原来的事物,如果没有就算了,一般使用在Service的查询操作)
  • REQUIRES_NEW:总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
  • MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

  • NOT_SUPPORTED:总是非事务地执行,并挂起任何存在的事务。

  • NEVER:总是非事务地执行,如果存在一个活动事务,则抛出异常

  • NESTED:如果有就嵌套、没有就开启事务

举报

相关推荐

0 条评论