JPA 事务将插入存储在数据库中

帕科·阿巴托

当我在事务 (TransactionAttributeType.REQUIRED) 方法中保存一个新实体时,createEntities这些实体在事务完成之前被立即存储在数据库中。我希望在 createEntities 方法完成时事务已完成并且更改会传播到 DB,但是如果我在 syso 行中调试并暂停执行,我可以在外部应用程序(例如 Toad)中看到 DB 中的更改。

我的猜测是错误的还是我配置的方法错误?

我的代码如下所示:

@Stateless
public class MyClass {
    @Inject
    private MyService myService;
    
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public void aMethod() {
        // don't want a transaction because this method does a lot of calculations
        // and lasts a lot of time resulting in transaction timeout otherway
        
        createEntities();
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void createEntities() {
        myService.createEntity(new MyEntity(1, "111"));
        System.out.println("Paused execution, checked DB and saw the entity was already inserted");
        myService.createEntity(new MyEntity(2, "222"));
        System.out.println("Paused execution, checked DB and saw the entity was already inserted");
    }
}

@Stateless
public class MyService {
    @PersistenceContext
    private EntityManager em;
    
    public void createEntity(MyEntity entity) {
        em.merge(entity);
    }
}
坦率

@TransactionAttribute只有当该方法是从另一个bean称为工作。
如果您aMethod()从某个其他 Bean 调用,该调用将被拦截以挂起最终处于活动状态的事务。
然后createEntities()在没有事务活动的情况下调用 then ,但不会拦截此调用,因为它是从 MyClass-Bean 内部调用的。
因此不会启动任何事务。
createEntity()-方法没有被标注,因此具有TransactionAttribute.Required积极的。
因为这个方法不是从同一个 Bean 调用的,并且没有事务处于活动状态,容器将启动一个新的。此事务在方法结束时提交。

更多关于容器管理的交易:https ://docs.oracle.com/javaee/6/tutorial/doc/bncij.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

使用Spring Boot JPA在数据库中插入多行

来自分类Dev

为什么要在数据库中插入JPA空值

来自分类Java

JPA:如何避免简单地加载对象,以便将其ID存储在数据库中?

来自分类Dev

JPA更改未持久存储在数据库中

来自分类Dev

JPA实体未保存在数据库中

来自分类Java

Spring JPA:将实体对象保存在数据库中

来自分类Dev

JPA:事务已在数据库中提交,但@Version不会递增

来自分类Dev

在数据库上插入实体+外键的正确方法(使用:Mysql,JPA)

来自分类Dev

在Spring Data JPA中使用CRUD存储库,由findById(long id)方法返回的日期为day-1,存储在数据库中的日期为Date

来自分类Dev

Spring JPA:重用该属性存储另一个对象时,ManyToMany关系未存储在数据库中

来自分类Java

即使H2 db中存在数据,JPA存储库方法也不返回数据

来自分类Java

REST API响应数据未使用Spring JPA保存在数据库中

来自分类Dev

如何在JPA中创建序列而不直接在数据库中创建

来自分类Java

如何使用JPA查询将数据插入到数据库?

来自分类Dev

使用Java JPA和Spring Data将结构化注释存储在MYSQL数据库中

来自分类Dev

通过Spring Data JPA存储库和Spring Data JDBC存储库共享一个数据库事务

来自分类Java

JPA @Version版本-在数据库中增加,但是使用较小的版本来更新记录

来自分类Java

通过JPA在数据库中实现一级缓存

来自分类Dev

无法使用 Spring Boot 和 JPA 在数据库中创建表

来自分类Java

JPA EntityManager:merge()试图在数据库中创建新行-为什么?

来自分类Java

与JPA一起使用时,如何让Hibernate在数据库中自动创建表?

来自分类Dev

Spring JPA-删除子元素不会反映在数据库表中

来自分类Dev

Spring Data JPA无法在数据库中创建表

来自分类Dev

无法使用 Spring Boot 和 JPA 在数据库中创建表

来自分类Java

Spring Batch-如何防止批次将事务存储在数据库中

来自分类Dev

使用 Spring Boot JPA 在 H2 数据库中插入数据

来自分类Java

避免通过JPA将'null'值插入数据库表

来自分类Dev

无法使用 JPA 存储库将对象列表保存到数据库中

来自分类Dev

Spring JPA不存储到数据库

Related 相关文章

  1. 1

    使用Spring Boot JPA在数据库中插入多行

  2. 2

    为什么要在数据库中插入JPA空值

  3. 3

    JPA:如何避免简单地加载对象,以便将其ID存储在数据库中?

  4. 4

    JPA更改未持久存储在数据库中

  5. 5

    JPA实体未保存在数据库中

  6. 6

    Spring JPA:将实体对象保存在数据库中

  7. 7

    JPA:事务已在数据库中提交,但@Version不会递增

  8. 8

    在数据库上插入实体+外键的正确方法(使用:Mysql,JPA)

  9. 9

    在Spring Data JPA中使用CRUD存储库,由findById(long id)方法返回的日期为day-1,存储在数据库中的日期为Date

  10. 10

    Spring JPA:重用该属性存储另一个对象时,ManyToMany关系未存储在数据库中

  11. 11

    即使H2 db中存在数据,JPA存储库方法也不返回数据

  12. 12

    REST API响应数据未使用Spring JPA保存在数据库中

  13. 13

    如何在JPA中创建序列而不直接在数据库中创建

  14. 14

    如何使用JPA查询将数据插入到数据库?

  15. 15

    使用Java JPA和Spring Data将结构化注释存储在MYSQL数据库中

  16. 16

    通过Spring Data JPA存储库和Spring Data JDBC存储库共享一个数据库事务

  17. 17

    JPA @Version版本-在数据库中增加,但是使用较小的版本来更新记录

  18. 18

    通过JPA在数据库中实现一级缓存

  19. 19

    无法使用 Spring Boot 和 JPA 在数据库中创建表

  20. 20

    JPA EntityManager:merge()试图在数据库中创建新行-为什么?

  21. 21

    与JPA一起使用时,如何让Hibernate在数据库中自动创建表?

  22. 22

    Spring JPA-删除子元素不会反映在数据库表中

  23. 23

    Spring Data JPA无法在数据库中创建表

  24. 24

    无法使用 Spring Boot 和 JPA 在数据库中创建表

  25. 25

    Spring Batch-如何防止批次将事务存储在数据库中

  26. 26

    使用 Spring Boot JPA 在 H2 数据库中插入数据

  27. 27

    避免通过JPA将'null'值插入数据库表

  28. 28

    无法使用 JPA 存储库将对象列表保存到数据库中

  29. 29

    Spring JPA不存储到数据库

热门标签

归档