栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

外行术语的春季传播示例

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

外行术语的春季传播示例

PROPAGATION_REQUIRED

class Service {    @Transactional(propagation=Propagation.REQUIRED)    public void doSomething() {        // access a database using a DAO    }}

如果调用者尚未启动 事务, 则在调用 doSomething()时它将启动新 事务

如果此方法的调用者已经开始事务,则使用调用者的事务,并且不会创建新的事务(即,正在运行一个事务)。

如果在doSomething()中引发了异常,则它将被回滚,这意味着调用方还将看到事务回滚。

当doSomething()返回时,事务尚未提交。调用者将提交事务(或可能回滚)。

PROPAGATION_REQUIRES_NEW

class Service {    @Transactional(propagation=Propagation.REQUIRES_NEW)    public void doSomething() {        // access a database using a DAO    }}

调用doSomething()时,它将 始终 启动新事务。

如果此方法的调用者已经启动了事务(TxnOuter),则调用者的事务将被 挂起, 并创建一个新事务(TxnInner)(即,正在运行两个事务)。

如果在doSomething()中引发异常,则TxnInner将回滚,但是来自调用方(TxnOuter)的“挂起”事务不受影响。

当doSomething()返回无异常时,它将提交事务(TxnInner)。调用者的事务(TxnOuter)将恢复,并且不知道已提交另一个事务。然后,调用方可以根据需要提交或回退TxnOuter。

需要注意的重要一点是,数据库将TxnOuter和TxnInner视为完全独立的事务,因此将其视为两个独立的提交。

PROPAGATION_NESTED

class Service {    @Transactional(propagation=Propagation.NESTED)    public void doSomething() {        // access a database using a DAO    }}

如果您的JDBC驱动程序和/或数据库支持JDBC保存点,则只能使用NESTED。

如果调用者尚未启动 事务, 则在调用 doSomething()时它将启动新 事务

如果此方法的调用者已经开始事务,则使用调用者的事务,并且不会创建新的事务(即,正在运行一个事务)。但是,当输入doSomething()时,会在事务上标记一个“保存点”。

如果在doSomething()中引发了异常,则可以将事务部分回滚到“保存点”。呼叫者将继续进行交易。

当doSomething()返回无异常时,调用者将提交整个事务(或回滚)。

需要注意的重要一点是,数据库仅查看一个事务,并且只有一个提交。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号