2012-03-19 9 views
1

さまざまなソース(例:Oracle)では、<property name="javax.persistence.jdbc.url" value="..."/>などを使用してJPAを使用するJava SEアプリケーションのpersistence.xmlにjdbc接続の詳細を指定する必要があると言われています。SEアプリケーションのJPA persistence.xmlデータソース

これは、ローカル、テスト、プロダクションなど、さまざまなデータベースに対してアプリケーションを実行したいときに非常に苦労します。私は現在、効果的に同じで接続の詳細が異なる複数の永続性ユニットを持っており、実行中の環境に基づいて適切な永続性ユニットを選択するようにしています。

この問題は次のとおりです。

  • 設定の複製。私がEntityクラスを追加すると、すべての永続ユニットに<class>MyClass</class>を追加する必要があります。私はむしろ一度それを指定したいと思う。
  • データベース接続のコンフィグレーションは、アプリケーションとともにパッケージ化されています。環境で使用されているデータベースを変更したい場合は、persistence.xmlを試してアプリを再構築する必要があります。私はむしろ、各自の環境にデータベース資格情報を指定する設定ファイルを持っています。そうすれば、多くの環境を持つことができますが、単一のパーシスタンスユニットが定義されています。その環境で1つのファイルを編集してアプリケーションを再起動するだけで、特定の環境のデータベースクレデンシャルを変更できます。

永続性を構成するにはどうすればよいでしょうか? <jta-data-source>または<non-jta-data-source>にJava SE環境で適切な処理を実行する方法はありますか?

答えて

1

Uコードに手動

Map<String, String> props = new HashMap<String, String>(); 
props.put("javax.persistence.jdbc.url", "YourURL"); 
EntityManagerFactory emf = Persistence.createEntityManagerFactory("UnitName", props); 
EntityManager em = emf.createEntityManager(); 
+0

おかげでそれをconfigのことができます。そのようにすれば、私は好きなように接続の詳細を管理することができます。それらを各サーバー上のファイルに格納して読み込み、EMFを初期化します。私はそれを試して、それがどうなるか見てみましょう。 – Spycho

関連する問題