gpt4 book ai didi

java - java EE 中的事务是什么?

转载 作者:行者123 更新时间:2023-12-01 21:09:06 25 4
gpt4 key购买 nike

在我见过的每个来源中,事务都被定义为一组一起成功或一起失败的操作。然而,在 JPA 中使用 EntityManager 时,似乎甚至需要事务来持久保存我在内存中创建的单个实体。交易的意义是什么?这个操作不是已经是原子的了吗?如何回滚单个 entity.persist()? java EE 文档中是否有对该概念的明确定义?

最佳答案

认为 EntityManager.persist() 是原子的就像始终使用启用自动提交的 SQL 一样。事务用于创建原子操作,该操作允许您将一行或多行作为单个原子操作插入到一个或多个表中,要么插入所有内容,要么不插入任何内容。已插入。

如果你没有交易,并且你插入了一个用户和他的两个电话号码(两个表),并且当你插入第二个电话号码时出了问题,你希望整个交易失败,而不是不一致数据。

如果您使用应用程序管理的 EntityManager,您可以通过编程方式控制事务 (EntityManager.getTransaction()),因此您可以控制哪些操作(插入/更新)应作为原子操作发生。

如果您使用容器管理的 EntityManager(Spring、JavaEE),则事务是声明性的(@Transactional 注释),因此事务基本上是方法范围的(通常通过多个方法调用传播)。

这只是事务方面的冰山一角,还有其他一些东西,例如隔离级别和序列化事务,但我们下次再讨论:)

关于java - java EE 中的事务是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41599801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com