2016-12-15 10 views
0

私のアプリケーションユーザーには多くのフィールドがあるので、1対1のエンティティで区切ることにしました。JPAは直線関係のないエンティティ間でデータを割り当てます

diagram 1

しかし、私は時々、私は関係を持たないエンティティからデータを取得する必要があることに気づい:ここでは例です。たとえば、BankCustomerWorkerとロードする必要があります(すべてのリレーションが遅延しています)。Personは必要ありません。図に示すモデルでは、BankCustomerをロードしてから、左にフェッチPersonをフェッチし、次に左にフェッチWorkerをフェッチします。

diagram 2

は今、すべてのエンティティが他の人との関係を持っています。だから私は考えていました。私はまた、1対1のリレーションシップが共有プライマリキーを持つことを知っています。したがって、すべての関係に別の外部キーを作成する必要はありません。このようなモデルでは
このように、また、関係のすべてのタイプのネットワークを作成するために利用できるようになります: diagram 3
このなります: diagram 4
だから私はRestrictionからAuthoritiesを取得する必要がある場合、私はする必要はありません私が必要としないUserUserInfoを取得してください。
だからここに私の質問です:

  1. は、それが(プロバイダとしてHibernateを使った)を実現することは可能ですか?
  2. いいですか?
  3. このような設計上の問題をどのように扱いますか?ポイントから

答えて

1

回答:HibernateとJPAがRDBMSにあなたが持っているeverithing実装に役立ちますよう

なぜ、それがfeasableする必要があります。

ただ試してみてください。 を指すように

回答:

このわからない、それは多くの要因に依存します。

Person、BankCustomer、およびWorkerは、タイプによって決定される継承関係で解決されます。

Inheritance mappingをご覧ください。

DBセッションでエンティティを作成または更新しようとすると、コーディング部で大量のリレーションシップが発生する可能性があります。

情報がほとんど必要ない場合は、dbに関連性は必要ありませんが、具体的にはHQLと書くことができます。を指すように

回答:

それは本当にあなたの特定のケースによって異なります。

モデルだけでなく、データの量、例えば、一度書くと多くを読んだり、頻繁に書き込んだりするなど、その仕事の種類。

その他多数のことがあります。

ここで回答する場合は、より具体的なケースを提示する必要があります。

関連する問題