gpt4 book ai didi

java - 在使用 JPA 的 Spring 中参与给定事务的确切含义是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 03:50:42 24 4
gpt4 key购买 nike

我是 Spring 和 JPA 的新手,我正在学习 Spring Core 认证,我对学习 Material 中的这个问题有一些疑问:

Are you able to participate in a given transaction in Spring while working with JPA?

我认为答案是否定的,因为我知道 JPA 提供了配置选项,因此 Spring 可以管理事务和 EntityManager,但我绝对不确定是否正确理解了这个问题。 参与给定交易的确切含义。

一开始我解释为与现有事务交互,这是不可能的,因为事务对于定义而言是原子的。

但是我在文档中找到了这些信息:

透明地参与 Spring 驱动的事务:

  • 只需使用 Spring 的 FactoryBeans 之一来构建实体管理器工厂

  • 使用@PersistenceContext 注入(inject) EntityManager 引用

定义一个事务管理器:JpaTransactionManager

并展示这个例子:

public class JpaOrderRepository implements OrderRepository {

private EntityManager entityManager;

@PersistenceContext
public void setEntityManager (EntityManager entityManager) {
this. entityManager = entityManager;
}

public Order findById(long orderId) {
return entityManager.find(Order.class, orderId);
}
}

那么它与我原来的问题有关吗?怎么办?

@PersistenceContext 注释的具体作用是什么?EntityManager 对象的确切作用是什么?

谢谢

最佳答案

我也在学习认证,在阅读您的帖子后,我认为 Spring 文档的这段摘录就是这个问题的全部内容:

Spring JPA also allows a configured JpaTransactionManager to expose a JPA transaction to JDBC access code that accesses the same DataSource, provided that the registered JpaDialect supports retrieval of the underlying JDBC Connection. Out of the box, Spring provides dialects for the EclipseLink, Hibernate and OpenJPA JPA implementations. See the next section for details on the JpaDialect mechanism.

同时检查 What transaction manager should I use for JBDC template When using JPA ?

关于java - 在使用 JPA 的 Spring 中参与给定事务的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29343847/

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