0

我的应用程序中的实体管理器有问题。我有两个这样的 DAO 类:

@Repository
public abstract class DaoA 
{
    protected ClassA persistentClass;

    @PersistenceContext(name="my.persistence", type=PersistenceContextType.EXTENDED)
    protected EntityManager entityManager;
    -------------- some typical action for DAO --------------
}

第二个 DAO 用于 ClassB,看起来类似于 DaoA。其余的事情由 Spring 框架为我完成。

当我调试应用程序时,我发现两个 DAO 对象都有不同的 EntityManager 实例。结果,我的两个不同的 DAO 与不同的 PersistenceContext 连接。

问题是这是否是正确的行为?我想为我的所有 DAO 类使用相同的 PersistenceContext。如果可能并且我是否正确理解了 JPA,请给我一个提示?

问候 HSD

4

1 回答 1

1

这是持久性上下文的正确行为,因此在这种情况下EXTENDED您不需要它。EXTENDED

在大多数情况下,您需要一个持久性上下文,即省略TRANSACTIONAL时的默认模式:type

@PersistenceContext(name="my.persistence")
protected EntityManager entityManager;

在这种模式下,持久性上下文与事务相关联,因此所有 DAO 在同一个事务中工作时将共享相同的持久性上下文。我想这就是你需要的。

于 2011-01-17T16:57:35.423 回答