开发者

EntityManager and two DAO with PersistenceContextType.EXTENDED

开发者 https://www.devze.com 2023-02-04 22:50 出处:网络
I have a problem with my entity manager in my application. I have two DAO clasess like this: @Repository

I have a problem with my entity manager in my application. I have two DAO clasess like this:

@Repository
public abstract class DaoA 
{
    protected ClassA persistentClass;

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

Second DAO is for ClassB and looks similar to DaoA. The rest of things are done for me by the Spring framework.

When I'm debugging the application I recognize that both DAO objects have different instances of EntityManage开发者_JAVA百科r. In the result my two different DAOs are connected with different PersistenceContext.

Question is if this is correct behaviour or not? I would like to have the same PersistenceContext for all my DAO classes. Please give me a hint if this is possible and if I understood the JPA correctly?

Regards Hsd


It's a correct behaviour of EXTENDED persistence context, therefore you don't need it to be EXTENDED in this case.

In most cases you need a TRANSACTIONAL persistence context, that is the default mode when type is omitted:

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

In this mode persistence context is associated with the transaction, so that all DAOs will share the same persistence context when working inside the same transaction. I guess it's what you need.

0

精彩评论

暂无评论...
验证码 换一张
取 消