2012-02-16 9 views
1

元々はすべてのエンティティが1つのDBにあります。私は2つのテーブル/クラスを持っています:AとB、外部DBへのDao参照の休止状態?

AはBと1対1のマッピングを持っているので、A.getB()を実行できます。これはBテーブルに対してクエリを生成します。

ここで、私たちのDBが混雑しすぎて忙しいとしましょう.Bテーブルが非常に大きいのですが、まれにしかアクセスしないので、Bを別のテーブル(またはnoSQLなどの別のデータストア) 。今私の質問は、どのように簡単なオブジェクトグラフのトラバーサル休止によって提供される維持することが可能ですか?

元々、Aオブジェクトを取得できました:A a = DaoForA.get(id_for_a);あたかもすべてがすでにメモリに入っているかのように、基盤となるDB操作を考えずにa.getB()を実行できます。 Bテーブルを別のDBに移動しても、この透過的なトラバーサルを達成することは可能ですか? A.hbm.xmlは存在しないので、この自動検索は実行できないので、Bテーブルはもはや存在しないので、マッピングタグでA.hbm.xmlを変更する必要があります。

どうもありがとう ヤン

答えて

0

Hibernateのエンティティが別のデータベースからのエンティティへの関連付けを持つことはできません。別のデータベースを使用する代わりに、実際にこれを行う必要がある場合は

  1. を参照してください。 Bをめったに使用しない場合、同じDB内に置くことは害を及ぼすことはありません。データベースが大きすぎる場合は、新しいハードディスクを購入してください。ハードウェアは安いです。
  2. データベースをクラスタ化できる場合。

「すべてがすでにメモリにあるかのように」Hibernateを使ったプログラミングは、災害のためのレシピです。あなたは、Hibernateがシーンの背後で何をするのかを理解する必要があります。