2010-11-27 7 views
2

アカウント用の中央データベースがあります。ログイン情報とdatabase profileというフィールドが含まれています。データベースプロファイルは、そのアカウントに使用するデータベース接続を示します。たとえば、私たちはProfile1、Profile2、Profile3 ... ProfileNJPAはこのシナリオでは適切なORMですか?

ユーザにProfile1があると示されている場合、Profile2の一部であると示されているユーザとは異なるデータベースを使用しています。

JPAについて私が理解しているところは、データベースがすべて同じスキーマを持ち、接続情報が異なっていても、各プロファイル(Persistence Unit)に対して新しいEntityManagerFactoryが必要であるということです。 100プロファイルを持つことになったら、100 Entity Manager Factoriesが必要になりますが、これは理想的ではありません。

私はEntityManagerFactoryを調べましたが、データベース接続オプションを変更することはできません。

私の唯一のオプションはN EntityManagerFactoryを持っていますか?もしそうならば、パフォーマンスに悪影響を及ぼします。

ありがとうございました。

答えて

3

あなたが話していることの種類は、JPA抽象化の範囲から外れています。特定の接続管理のようなものは、一般的にプロバイダ固有のものです。例えば、Hibernate SessionFactoryを使うと確かにcreate new sessions from an aribtraty JDBC connectionにすることができます。 ID生成スキーム(おそらくDBで生成されたシーケンスを使用する必要があるでしょう)などの落とし穴があります.L2キャッシングのために基本的にはフープですが、注意深くプログラミングすれば動作させることができます。

2

javax.persistence.Persistence#createEntityMananagerFactory(String,Map)を使用して、マップに接続パラメータを指定してください。 EMFをキャッシュし、接続を慎重に使用し、異なるEMFからのn個の一致オブジェクトを混合しないでください。

2

春を使用している場合は、データソースを動的に切り替える方法があることがわかります。詳細情報を探すhere

関連する問題