2

数百のテーブルを持つ非常に大きなアプリケーションがあります。

整理の目的で、テーブルをグループ (たとえば 5 つ程度) に分割し、データベース内の異なるスキーマに配置したいと考えています。データベースを 1 つだけ使用したいので、スキーマ全体でテーブルを結合できるため、SessionFactory は 1 つだけです。

ただし、すべてのスキーマで名前の競合が発生した場合にどうなるかはわかりません。休止状態オブジェクトのコードにさまざまなパッケージを簡単に含めることができますが、それは問題ではありません。しかし、異なるパッケージで両方とも「顧客」と呼ばれる 2 つのエンティティがある場合、HQL に関しては、HQL クエリでそれらを区別することは可能ですか? たぶん、ある種の接頭辞が付いていますか?

これを行う際に見られる提案やその他の落とし穴を歓迎します。

4

1 に答える 1

1

私はこれを試したことはありませんが、基本的にはうまくいくはずです。

Hibernate では、エンティティ名を使用しない限り、同じクラス名を複数回マップすることはできません (この質問を参照)。(非常に正確に言うと、Hibernate は同じエンティティ名を複数回使用することを許可しません。他に何かが指定されていない場合、クラスはそのクラス名をエンティティ名として持ちます)。

ドキュメントにはあまりありません。章 5.3, クラスを複数回マッピングするを参照してください。

エンティティ名は次の場所で使用できます。

  • クエリ
  • エンティティを保存するとき (この場合、複数回マップされるのは同じクラスではないため、エンティティ名を指定する必要はありません。ただし、試してみる必要があります)。
  • 参照をマッピングするとき(ここでも同じです:あなたの場合は必要ありません)

幸運を ;-)

于 2012-08-30T08:47:00.870 に答える