我无法在spring data jpa应用程序中找到有关EntityManager与事务之间关系的信息。
哪一项陈述是正确的:
答案 0 :(得分:0)
正确答案是: EntityManager的一个共享实例用于同一持久化上下文中的所有事务。
我们可以在这里考虑两件事:
首先,EntityManager接口中的definition
EntityManager实例与持久性上下文相关联。持久化上下文是一组实体实例,其中对于任何持久性实体标识,存在唯一的实体实例。在持久化上下文中,管理实体实例及其生命周期。
可由给定EntityManager实例管理的实体集由持久性单元定义。持久性单元定义了由应用程序关联或分组的所有类的集合,并且必须在映射到单个数据库时将其共同定位。
其次,Spring SimpleJpaRepository的构造函数:
public SimpleJpaRepository(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {
Assert.notNull(entityInformation, "JpaEntityInformation must not be null!");
Assert.notNull(entityManager, "EntityManager must not be null!");
this.entityInformation = entityInformation;
this.em = entityManager;
this.provider = PersistenceProvider.fromEntityManager(entityManager);
}
em
是使用final
修饰符在该类中定义的属性:
private final EntityManager em;
在SimpleJpaRepository的方法中调用em
而不创建EntityManager的新实例。