2013-09-03 9 views
12

persistence.xmlの永続ユニットは、アプリケーションの構築中に作成されます。実行時にデータベースURLを変更したいので、実行時に永続性ユニットを変更する方法はありますか?私は配布後に事前バインドされたデータベース以外の別のデータベースを使用することになっていました。私はあなたがプラグイン・フレームワークを作成する必要があり、長命のセッションのアーキテクチャでのEclipseLink(JPA 2.1)永続ユニットを動的に変更する - JPA

+0

どのサーバーを使用していますか? –

+0

Nop。それはスタンドアロンのアプリケーションです。データベースサーバーはOracle-12cとSQL Server 9.0.xです。 –

答えて

25

永続性ユニットファイル(Persistence.xml)はそのままです。次のようにプロパティをオーバーライドすることができます。

EntityManagerFactory managerFactory = null; 
Map<String, String> persistenceMap = new HashMap<String, String>(); 

persistenceMap.put("javax.persistence.jdbc.url", "<url>"); 
persistenceMap.put("javax.persistence.jdbc.user", "<username>"); 
persistenceMap.put("javax.persistence.jdbc.password", "<password>"); 
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>"); 

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap); 
manager = managerFactory.createEntityManager(); 
0

を使用してい

したがって、別のスレッドグループとクラスリポジトリを作成する必要があります。

これは、システム・クラス・ローダー(通常のURLClassLoader、Entitysが含まれています)

  • あなたのクラスローダツリーかもしれません
    • JPA-クラスローダ
      • あなたJPAをロードします.jarpersistence.xmlとし、アプリケーションクラスローダからデータベースコンフィグレーションを指定してください。
      • entityManager/session-factoryをインスタンス化してください。
      • データベースで作業する必要があるプラグインを読み込みます。ユニットテスト(D)とプラグイン統合テストを実行します。
2

あなたは、データベースのURLとその他の設定を選択するプロパティを渡すためにPersistence.createEntityManagerFactory(地図)を使用することができます。

+0

いいですね。私はこれを試してみましょう。 –

関連する問題