【发布时间】:2015-06-03 07:53:48
【问题描述】:
我是 Spring 和 JPA 的新手,我正在学习 Spring Core 认证,我对学习材料中发现的这个问题有些疑问:
你是否能够在 Spring 中参与给定的事务? 与 JPA 合作?
我认为答案是否定的,因为我知道 JPA 提供了配置选项,因此 Spring 可以管理事务和 EntityManager,但我绝对不确定是否正确理解了这个问题。 参与给定交易究竟意味着什么。
一开始我解释为与现有事务交互,这是不可能的,因为事务是原子定义的。
但是他们进入文档我发现了这个信息:
透明地参与 Spring 驱动的事务:
只需使用 Spring 的一个 FactoryBean 即可构建 EntityManagerFactory
使用 @PersistenceContext 注入 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 对象的确切作用是什么?
Tnx
【问题讨论】:
-
这听起来像是一个措辞可怕的问题。
-
@chrylis 事实上,我很难理解到底在问什么
标签: java spring hibernate jpa spring-data