1

マルチテナンシーをサポートするためにJPA2とEJB3を使用するJavaEEWebアプリケーションを変更しようとしています。

アプリケーションリクエストを開始する前に現在のテナントIDを設定して、アプリケーション自体がマルチテナント環境で使用されていることを認識しなくてもよいようにします。

オンプレミスコンテナとGoogleAppEngineの両方にアプリケーションをデプロイできるようにするために、ベンダー固有の機能を使用しないようにしています。そうは言っても、サーブレットフィルタなどの外部の場所からベンダー固有の機能を使用できる場合、これは優れたソリューションになります。

現在、Glassfish 3.1をコンテナーとして使用し、Hibernate4.0をJPA2プロバイダーとして使用しています。

サンプルコードをいただければ幸いです。

ありがとう、イド。

4

2 に答える 2

1

JPAは、特定のマルチテナンシーサポートを定義していません。そのため、プロバイダー固有の機能を使用せずに実装するのは難しい場合があります。

テナントごとに同じテーブルを使用できますが、スキーマは異なります。次に、同じマッピングを持つ別の永続性ユニットを作成できますが、追加のorm.xmlファイルに別のデフォルトスキーマを設定します。

EclipseLinkを介したGlassfishでのマルチテナンシーのサポートについては、以下を参照してください。

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Single-Table_Multi-Tenancy

于 2012-05-23T13:32:30.647 に答える
0

マルチテナンシーには2つのデータベースを使用します。このように、メンテナンスはより簡単なままです。インジケーターをスレッドローカルに保存し、実行時にそれをチェックして、使用する接続を決定できます。

于 2012-06-24T01:19:27.980 に答える