@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createUser(final UserBean userBean) {
//Some logic here that requires modification in DB
}
对于每个客户机,我们自然需要发送关于事务的反馈(OK或Exception->rollback)。
我的问题是:如果我使用required
,是否意味着只使用一个事务,如果第100个客户机遇到问题,第1个客户机的事务也会回滚?
使用requires_new
仅在从事务性上下文调用方法时才适用;当从非事务性上下文调用该方法时,它的行为将完全符合Required
的要求--它将创建一个新事务。
这并不意味着所有客户机只有一个事务--每个客户机将从非事务性上下文开始,一旦请求处理命中@transactional
,它将创建一个新事务。
因此,考虑到这一点,如果使用requires_new
对该操作的语义有意义--我不会担心性能--这将导致过早的优化--我宁愿强调正确性和数据完整性,并在收集性能指标后担心性能,而不是在此之前。
我在存储库类中有一个方法,标记为,该方面正在执行,如stacktrace中所示,但抛出的异常是“Transaction required exception” 电磁场: 交易: 我真的要疯了,任何帮助都会很好。 似乎,有一个事务,它被检查为完成,加入事务失败,所以它标记为仅回滚,因为它不能加入它。
在下面的文章中说, 在此处输入链接描述 需要传播–支持当前交易;如果不存在,请创建一个新的。 下面是一个产品代码,然后是两个表的产品详细信息。 我的问题是什么时候会发生这种行为?我的意思是,当前交易怎么会结束?是在保存还是更新之后? 如果我们使用PROPAGATION_REQUIRED假设当前事务在插入产品后结束。然后一个新的事务来了,但是如果插入产品数量时出现任何故障,它只会回滚数量而不是输入的
在以下代码方法中,更新正确的sql,但sql有一些问题,但是,当我调用doService()时,它必须将更新提交到DB,即使doService 2()有sql异常,因为doService 2()有一个新的传播类型,但是当我取消这个更新时,不会提交DB。。 正如你们的建议,以以下方式进行测试,但仍然面临相同的问题。这里i在一个单独的类中,但即使仍然存在与上述相同的问题
我试图弄清楚如何配置一个方法,使其不在使用Spring的事务中运行。我读到Spring数据存储库默认情况下激活其方法中的事务行为。我不想要这个事务,因为我有许多对存储库的“保存”调用,并且每个调用都是独立的。我认为为每个对存储库方法的调用创建一个事务会降低代码和应用程序的性能。所以: 这是可能的还是每个服务或dao方法都必须在一个事务中运行? 如果有,为什么? 如果可能,如何配置方法不在事务中运行
问题内容: 那里的许多示例都主张对数据库事务进行显式回滚,具体方法如下: 但是,我倾向于这样做: 当发生异常时,我只是依靠未提交事务的隐式回滚。 依靠这种隐式行为有什么问题吗?有人有令人信服的理由为什么我不应该这样做吗? 问题答案: 不,它不是特别需要的,但是我可以想到两个可能是个好主意的原因: 明晰 有人可能会争辩说使用可以更清楚地表明在什么情况下不会进行交易。 释放锁 在处理事务时,重要的是要
我正在尝试使用嵌入式野蝇运行我们的JPA单元测试。到目前为止,当我进行清洁时,我得到了以下步骤的工作 嵌入式wildfly将部署在项目的/target文件夹中 MSSQL数据库驱动程序将被部署并注册为驱动程序 arquillian创建一个包含所有必需依赖项的.war文件 arquillian将我的项目的.war部署到嵌入式wildfly,并在嵌入式wildfry上开始单元测试 现在我的问题是:当我