1

マルチテナントSaaSアプリケーションで実行時にデフォルトのスキーマを変更する必要があります。(共有データベース - 個別のスキーマ)。基本的に、すべての顧客は独自のスキーマを持ち (機密保持上の理由からこのように設計されています)、ログイン資格情報に基づいて、ログイン後に特定のスキーマに接続されます。

JPA2.0 と eclipselink を永続化プロバイダーとして使用しています。

メソッド スコープの EntityManager を作成するときに、アプリケーション スコープのシングルトン EMFを作成し、スキーマ名を createEntityManager に渡すことを考えましたが、スキーマ プロパティをcreateEntityManagerFactory()に渡すだけでよいことに気付きました。セッション (@SessionScope) を実行し、すべてのビジネス メソッドで EMF から Em を作成します。

設計は、私が説明したシナリオに適していますか?

提案はありますか?

前もって感謝します

4

1 に答える 1

1

私はそのようなマルチテナント セットアップの経験はありませんが、全員が共有する 1 つの一意の EMF から、ユーザーごとに 1 つの EMF に移行します。

あなたは行き​​過ぎです。正しい粒度 IMO は、データベース スキーマごとに 1 つの EMF である必要があります。2 人のユーザー (したがって 2 つの HTTP セッション) が同じスキーマを使用して 2 つの異なる EMF を持つ理由はありません。

于 2012-05-15T08:39:10.580 に答える