2

永続化ユニット、コード、または注釈を使用する方法は 2 つあります。

コード
[..]
EntityManagerFactory emf;
emf = Persistence.createEntityManagerFactory("SOMEPU");
[..]

また

注釈
[..]
@PersistenceContext(name = "persistence/LogicalName", unitName = "SOMEPU")
[..]

質問: 永続化ユニットを変更したい (または別の jdbc ソースを参照したい) 場合、ソースコードのバージョンを簡単に調整して、設定ファイルなどから変数を読み取ることができます。しかし、注釈に変数を入れることはできません。解決策は何ですか?

はい、常に同じ PU を維持し、アプリケーション サーバーの jbdc リソースを別の場所にポイントすることはできますが、AS の管理者設定をいじくり回したくありません。

乾杯スヴェン

4

1 に答える 1

0

PersistenceContext を取得するためにアノテーションを絶対使用する必要がある場合は、EntityManager の作成を何らかのクラスでラップし、それを必要とする Bean に注入することができると思いますか?

public interface MyPersistenceContext
{
      public void getEntityManager();
}

次に、EJB で次のようにします。

public class MyEJB
{

      @EJB
      private MyPersistenceContext persistenceContext;

      private EntityManager em;

      @PostConstruct
      public void postConstruct()
      {
             em = persistenceContext.getEntityManager();
      }

 ....

提供する MyPersistenceContext の実装が EntityManager を作成する方法は、あなた次第です。

于 2009-07-24T11:42:58.680 に答える