0

アプリケーションのエンティティ マネージャに問題があります。次のような 2 つの DAO クラスがあります。

@Repository
public abstract class DaoA 
{
    protected ClassA persistentClass;

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

2 番目の DAO は ClassB 用で、DaoA に似ています。残りの作業は、Spring フレームワークによって行われます。

アプリケーションをデバッグしているときに、両方の DAO オブジェクトが EntityManager の異なるインスタンスを持っていることに気付きました。その結果、2 つの異なる 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 に答える