我对Spring和JPA都比较新,在学习Spring核心认证时,我对学习资料中的这个问题有一些疑问:
在使用JPA的同时,你能否参与到一个给定的Spring事务中?
我认为答案是否定的,因为我知道JPA提供了配置选项,以便Spring可以管理事务和EntityManager,但我绝对不确定自己是否正确理解了这个问题。究竟参与到一个给定的事务中是什么意思。
一开始我将其解释为与现有事务进行交互,但这是不可能的,因为事务本质上是原子性的。
但在文档中我发现了以下信息:
要透明地参与Spring驱动的事务:
只需使用Spring的FactoryBeans之一来构建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对象的确切作用是什么?
谢谢