こんにちは、私はOSGi
ユーザー認証を担当するバンドルをプログラミングしています。設計上の理由から、複数のデータベース スキーマに対してクエリを実行する必要があります (これらのスキーマは動的に作成または削除できます)。私はMySQL
ストレージエンジンとして実行しています。
どうにかして、これらのスキーマのオンデマンド エンティティ マネージャーを作成できるようにする必要がありますが、うまくいきませんでした。これが私が試したもので、必要なものに近づきました:
実際に、デフォルト スキーマへのデータベース接続を確立できる JTA データ ソースを使用して永続化ユニット (Eclipselink) を作成します。ただし、プロパティをオーバーライドしようとすると、javax.persistence.jdbc.url
. ただし、常にデフォルトのスキーマを指し続けます。
プロパティを正しくオーバーライドしていないか、JTA データソース プロパティを からEntityManager
に変更できないと思いますEntityManager
。EntityManagers を作成する方法は次のとおりです。
Map<String, String> dbProps = new HashMap<String, String>();
dbProps.put("javax.persistence.jdbc.url","jdbc:mysql://mydomain:3306/mydynamicdb);
EntityManagerFactory fact = Persistence.createEntityManagerFactory("myPersistenceUnit", dbProps);
EntityManager myEM = fact.createEntityManager();
最後に、それらはすべてデフォルトのスキーマを使用し続けるため、私の質問は次のとおりです。
- これは、動的な EntityManager 処理の効率的なアプローチですか? もしそうなら、スキーマプロパティを効果的にオーバーライドするにはどうすればよいですか?
- オーバーライド以外の代替手段はありますか?
ご案内を差し上げますので、よろしくお願いいたします。