首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我什么时候应该使用EJB事务属性'Mandatory'和'Never'

在云计算领域,EJB(Enterprise JavaBeans)是一种用于开发可扩展企业级应用程序的技术。EJB 事务属性有两种:Mandatory 和 Never。

EJB 事务属性 'Mandatory'

当事务属性设置为 Mandatory 时,表示客户端调用会话 Bean 的方法必须在一个已经存在的事务中运行。如果客户端没有创建事务,那么 EJB 容器将会抛出一个 javax.ejb.EJBTransactionRequiredException 异常。Mandatory 事务属性可以确保 Bean 的方法在事务上下文中执行,从而提供了数据的一致性和完整性。

优势

  1. 确保数据一致性和完整性。
  2. 提供了对现有事务的支持。

应用场景

Mandatory 事务属性适用于需要在现有事务中执行的业务逻辑,例如数据库操作、资源管理等。

推荐的腾讯云相关产品和产品介绍链接地址

  1. 腾讯云 EJB
  2. 腾讯云 EJB 事务

EJB 事务属性 'Never'

当事务属性设置为 Never 时,表示客户端调用会话 Bean 的方法不应该在一个现有的事务中运行。如果客户端试图在一个现有事务中调用 Never 事务属性的方法,EJB 容器将会抛出一个 javax.ejb.EJBException 异常。Never 事务属性可以确保 Bean 的方法在没有事务上下文中执行。

优势

  1. 避免了不必要的事务开销。
  2. 提高了执行速度。

应用场景

Never 事务属性适用于不需要事务支持的业务逻辑,例如读取不涉及数据修改的数据、执行简单的计算等。

推荐的腾讯云相关产品和产品介绍链接地址

  1. 腾讯云 EJB
  2. 腾讯云 EJB 事务

总结:

在选择 EJB 事务属性时,需要根据业务逻辑的需求来决定使用 Mandatory 还是 Never。如果业务逻辑需要在现有事务中执行,则应使用 Mandatory;如果业务逻辑不需要事务支持,则应使用 Never。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

18个示例详解 Spring 事务传播机制

* Analogous to EJB transaction attribute of the same name. */ 不使用事务,如果存在事务,就抛出异常。...NEVER 的方法不使用事务,调用 NEVER 方法如果有事务,就抛出异常。...也不使用事务,所以 a1 b1 都添加成功,b2添加失败。...对比示例17示例18,NESTED REQUIRED 的区别: REQUIRED 传播属性表明调用方被调用方都是使用同一个事务,被调用方出现异常,无论异常是否被捕获,因为属于同一个事务,只要发生异常...无论是否调用方是否存在事务,都是以非事务的方式执行,出现异常也会回滚 NEVER 不用事务,存在事务就报错, MANDATORY 相反 NESTED 嵌套事务,新建一个子事务事务执行相互独立,如果调用方出现异常

1.4K10

spring事务的传播属性--@Transaction的Propagation属性

在Spring的@Transaction中,有个重要的属性:Propagation,指的是事务方法之间发生嵌套调用时,事务的传播行为(当前调用的这个方法的事务当前的其他事务之间的关系)。...,就加入这个事务,没有事务,就抛出异常 MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY), //新建一个事务执行,如果当前有事务,就把当前的事务挂起...(TransactionDefinition.PROPAGATION_NOT_SUPPORTED), //在无事务状态下执行,如果当前有事务,会抛出异常 NEVER(TransactionDefinition.PROPAGATION_NEVER...There is no analogous feature in EJB....,会抛出异常 NEVER(TransactionDefinition.PROPAGATION_NEVER), //当前有事务,就新建一个事务,嵌套执行,当前无事务,就新建一个事务执行 //这个看了不同的文章

1.9K30

Spring相关面试题:谈一谈你对事务的理解?

PROPAGATION_REQUIRED,required:支持当前事务,如果没有事务,创建一个新的。 ​ A 有事务,B使用A的事务。(支持当前事务) ​ A没有事务,B创建新的。...() PROPAGATION_SUPPORTS,supports:支持当前事务,如果没有事务,以非事务执行。 ​ A 有事务,B使用A的事务。...(支持当前事务) ​ A没有事务,B以非事务执行。 PROPAGATION_MANDATORYmandatory:支持当前事务,如果没有事务,抛异常 ​ A 有事务,B使用A的事务。...A 没有事务,B以非事务执行。 PROPAGATION_NEVERnever:不支持当前事务,如果有抛异常。 ​ A 有事务,B抛异常 ​ A 没有事务,B以非事务执行。...PROPAGATION_NESTED, nested :嵌套事务,底层使用savepoint进行嵌套事务操作。 ​ 保存点允许回顾部分事务

49530

关于Spring的事务Transactional,锁同步,并发线程Spring事务传播机制和数据库隔离级别

这可以通过“瞬间共享读锁”“排他写锁”实现,读取数据的事务允许其他事务继续访问该行数据,但是未提交写事务将 会禁止其他事务访问该行。SQL Server 默认的级别。...可重复读取(Repeatable Read): 禁止 不可重复读取脏读取。...但是有时可能出现幻影数据,这可以通过“共享读锁”“排他写锁”实现,读取数据事务将会禁止写事务(但允许读事务),写事务则禁 止任何其他事务。...* Analogous to EJB transaction attribute of the same name. */ MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY...* Analogous to EJB transaction attribute of the same name. */ NEVER(TransactionDefinition.PROPAGATION_NEVER

1.5K30

重点来了:事务一致性的深入研究&EJB的全生命周期 | 从开发角度看应用架构5

使用CMT的EJB不得使用任何与应用程序服务器的事务范围边界冲突的JTA API方法。...事务属性可以用来控制执行UserService类方法的范围上下文。 Java EE规范定义了六个事务属性。...设置交易属性 通过使用javax.ejb.TransactionAttribute注释注释EJB类或方法并将其设置为javax.ejb.TransactionAttributeType枚举常量之一来声明事务属性...如果使用@TransactionAttribute在类级别注释EJB,则指定的属性适用于EJB中的所有方法。 使用@TransactionAttribute注解特定方法仅将该属性应用于该方法。...(TransactionAttributeType.NEVER事务属性进行注释,因为此方法只执行一个只读操作 该数据库并不插入,删除或更新任何数据。

80140

Spring的一些基本概念(面试备用)

然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 ◆ 框架——Spring可以将简单的组件配置、组合成为复杂的应用。...◆Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用工程中,可通过一种 一致的方法来进行配置。...例如,Spring能使用 AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。...切面对关注点进行模块化,例如横切多个类型对象的事务管理 Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP 提供声明式企业服务,特别是为了替代EJB声明式服务。...PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。

27720

Spring的声明式事务管理

这些简单的示例应该清楚地说明,为了维护数据完整性一致性,必须使用事务。不过对于在 Java 平台中实现事务的复杂性陷阱而言,这些示例只是涉及了冰山一角。...不管是使用 Spring Framework,还是使用 EJB使用 REQUIRES_NEW 事务属性都会得到不好的结果并导致数据损坏不一致。...事务回滚陷阱 将最常见的事务陷阱留到最后来讲。遗憾的是,在生产代码中多次遇到这个错误。首先从 Spring Framework 开始,然后介绍 EJB 3。...还可以使用属性的相反形式(noRollbackFor)指定除某些异常以外的所有异常应该强制回滚。...本系列后续文章中描述的事务策略将介绍何时、何处使用回滚指令,以及何时使用 REQUIRED 与 MANDATORY 事务属性

92050

JavaEE - JPA(2):EJB中的事务管理

Container事务类型 在这种事务类型中,由于应用服务器提供的容器对事务提供了一定程度的支持,因此有下面两种实现思路: 在容器的帮助下完成自动划分 使用JTA接口在应用中编码完成显式划分 EJB中的事务划分...下面就来看看这个注解定义了那些可选项: MANDATORY: 运行当前方法时要求存在处于active状态的事务。如果没有active状态的事务则会抛出异常。...NEVER: 当运行的当前方法采用此选项时,如果运行时发现有active状态的事务,那么会直接抛出一个异常。 在上面的各种选项中,出现了事务的创建以及挂起。...,什么时候结束。...不像CMT那样通常以业务方法的开始结束作为事务的起点终点。如果只开始了一个事务,而忘记关闭它,那么会导致异常的发生,同时该事务也会被容器回滚。 而且,BMT类型的事务无法使用从外部进入的事务

86410

Spring事物的传播行为案例分析

1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解 2、spring事务传播特性的定义以及案例分析  一、事务的特性ACID 这四个英文单词拼写一直记不住,求记忆方法...xml属性中进行配置。...4、propagation_mandatory,必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory...事务的传播行为required_new(代码注释清忽略)  结果require一样,两条数据都没有入库,唯一健冲突导致第一条数据回滚,大家可以思考下下面这两种情况。 ?...事务的传播行为not_suppoted  这种情景下,如果你根据我的思路一步走的应该可以想到id 为17的入库,第二条主键冲突虽然然而notSupportSonTransationsl()这个方法没有事务所以不影响第一条入库情况

55010

猫头鹰的深夜翻译:spring事务管理

事务管理的一个重要方面是定义正确的事务边界,例如事务何时开始,什么时候应该结束,什么时候应该在数据库中提交数据,什么时候应该回滚(在出现异常的时候)。...因为一旦事务开始,就无法进行配置 READ_COMMITTED 防止脏读;会发生不可重复的读取幻读。 READ_UNCOMMITTED 会出现脏读,不可重复读幻读。...其它的选项如REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER, NESTED REQUIRED 表示如果当前没有活跃的事务上下文,目标方法将无法运行...如果已有事务,它将暂停。 MANDATORY 表示目标方法需要运行中的事务。如果没有事务,它将抛出异常。 SUPPORTS 无论是否有事务上下文,目标方法可以执行。...服务层应该包含逻辑上进入事务的用户交互的详细级用例行为。 在一些CRUD应用中,Service层的业务代码并不复杂,Dao层的代码差不多。

56820

weblogic EJB 学习

大家好,又见面了,是你们的朋友全栈君。 EJB 学习笔记 1、ejb 基础知识 (1) 无状态会话bean 不保存客户机的会话状态 优点:使用小量的实例即可满足大量的客户。...工厂,客户机可以使用本地接口创建、找出删除ejb实例。...的默认事务属性指定为Required) Required(容器管理的事务使用属性 Nerver、NotSupported...,否则不能 Mandatory 如果调用者有一个事务,相应的EJB可以参与事务,否则,TransactionRequiredException Required 如果调用者有一个事务,相应的EJB可以参与事务...使用EJBObject.setRollbackOnly(); (4) 不能让事务涉及web层表示逻辑 (5) 企业应用中不应当选用supports 事务属性,因为只有调用者开始一个事务后,ejb才能在事务中运行

1.2K20

Spring事务的传播行为案例分析

1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解 2、spring事务传播特性的定义以及案例分析  一、事务的特性ACID 这四个英文单词拼写一直记不住,求记忆方法...xml属性中进行配置。...4、propagation_mandatory,必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory...,重新执行新加的事务 [qqq] 事务的传播行为required_new 结果require一样,两条数据都没有入库,唯一健冲突导致第一条数据回滚,大家可以思考下下面这两种情况。...with propagation 'never' [1596530344292092543.jpeg] 事务的传播行为NEVER 8、 propagation_nested,这种嵌套的事务,外围如果没有事务则自己另起一个事务

95910

EJB 学习笔记

大家好,又见面了,是你们的朋友全栈君。 EJB 学习笔记 1、ejb 基础知识 (1) 无状态会话bean 不保存客户机的会话状态 优点:使用小量的实例即可满足大量的客户。...工厂,客户机可以使用本地接口创建、找出删除ejb实例。...的默认事务属性指定为Required) Required(容器管理的事务使用属性 Nerver、NotSupported...相应的EJB调用也可以参与事务,否则不能 Mandatory 如果调用者有一个事务,相应的EJB可以参与事务,否则,TransactionRequiredException Required...使用EJBObject.setRollbackOnly(); (4) 不能让事务涉及web层表示逻辑 (5) 企业应用中不应当选用supports 事务属性,因为只有调用者开始一个事务后,ejb才能在事务中运行

53820

SpringBoot系列教程之事务传递属性

200202-SpringBoot系列教程之事务传递属性 对于mysql而言,关于事务的主要知识点可能几种在隔离级别上;在Spring体系中,使用事务的时候,还有一个知识点事务的传递属性同样重要,...本文将主要介绍7中传递属性使用场景 <!...MANDATORY 需要在一个正常的事务内执行,否则抛异常 使用姿势如下 @Transactional(propagation = Propagation.MANDATORY, rollbackFor...NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常。 使用姿势如下 /** * 总是非事务地执行,如果存在一个活动事务,则抛出异常。...小结 前面介绍了7中传播属性,下面简单对比小结一下 事务 特点 REQUIRED 默认,如果存在事务,则支持当前事务;不存在,则开启一个新事务 SUPPORTS 如果存在一个事务,支持当前事务

76720

源码分析 spring事务处理机制

Spring在TransactionDefinition接口中定义这些属性,以供PlatfromTransactionManager使用, PlatfromTransactionManager是Spring...PROPAGATION_SUPPORTS 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。 PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。...,则使用默认的事务属性   if (definition == null) {                 definition = new DefaultTransactionDefinition...   //如果事务传播特性配置的是mandatory,当前没有事务存在,抛出异常   if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_MANDATORY...   try {     //不激活当前线程绑定的事务,因为事务传播特性配置要求创建新的事务   boolean newSynchronization = (getTransactionSynchronization

897140
领券