0

プロトタイプの範囲を持つ Bean を使用した自動配線で春に質問があります。基本的には、JPA で春のコードを書いています。だから、DAO レイヤーでエンティティマネージャーを自動配線しています。 @configuraion Annotation を使用してクラスから。

@Configuration
public class DALConfigurationLoader {


    @Bean
    @Scope("prototype")
    public EntityManager getEntityManager() {
}

これを行うと、リクエストごとに新しい Bean を取得する必要があると期待しています。

@Component
public class OfferPriceDomainDAOImpl  {



    @Autowired
    private EntityManager entityManager;
        public OfferPrice getOfferPrice(String offer_Price_Id) throws DataAccessException{
           //use entitymanager here 
        }

   }

この場合、それは間違っているすべてのリクエストに対して単一のエンティティマネージャーです.各メソッドが新しいエンティティマネージャーを取得する必要があります.jpa仕様に基づいて、すべての新しいリクエストは新しいエンティティマネージャーを処理する必要があります...どうすれば自動配線できますかプロトタイプの範囲を持つ Bean ..

誰かが私の質問に答えることができれば、本当に感謝しています..

ありがとう、スワティ

4

2 に答える 2

2

Spring リファレンス ガイドの JPA セクションで概説されているように、@PersistenceContextではなく EntityManager を注入するために使用します。ライフサイクルを適切に処理します。@Autowired

思ったように機能しなかった理由について: DAO のインスタンスが作成されるたびに、EntityManager が挿入されます。EntityManager は scope=prototype であるため、注入する必要がある DAO ごとに新しいものが作成されます。ただし、DAO はシングルトンであるため、そのうちの 1 つしか作成されないため、必要な EntityManager は 1 つだけです。

于 2013-02-14T06:02:33.900 に答える