2011-01-17 13 views
0

私のアプリケーションでエンティティマネージャに問題があります。EntityManagerとPersistenceContextType.EXTENDEDを持つ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 -------------- 
} 

セカンドDAO ClassBのためのもので、DaoAのようになります。私はこのような2 DAOのclasessを持っています。残りのものは、Springフレームワークによって私のために行われます。

私がアプリケーションをデバッグするとき、私は両方のDAOオブジェクトが異なるEntityManagerのインスタンスを持っていることを認識します。その結果、私の2つの異なるDAOは異なるPersistenceContextで接続されています。

これは正しい動作であるかどうかです。すべてのDAOクラスに対して同じPersistenceContextを使用したいと思います。もしこれが可能で、私がJPAを正しく理解すれば、私にヒントを与えてください。

よろしくHSD

答えて

1

それはEXTENDED永続コンテキストの正しい行動だ、したがって、あなたはそれがこのケースでEXTENDEDである必要はありません。あなたはTRANSACTIONAL永続コンテキストを必要とする多くの場合

typeが省略されたとき、それはデフォルトのモードです:すべてのDAOは同じを共有するように、このモードでは、永続コンテキストで

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

は、トランザクションに関連付けられています同一のトランザクション内で作業するときは永続コンテキストになります。私はそれがあなたが必要とするものだと思います。

+0

ありがとうございました。これは、多くのDAOインスタンスに対して1つのPersistenceContextインスタンスしか持てないことを意味しますか? – hsd

+0

@hsd:更新しました.. – axtavt

+0

追加質問のみです。これはPersistenceContextType.EXTENDEDをすべてのDAO上で共有することが可能ですか? – hsd

関連する問題