0

User クラスに依存するクラス Address があるとします。アドレスはコンポーネント型です。Address クラスには、Country などの他のエンティティへの参照を含めることができます。

もし、そうなら?

住所と国で4つの関係すべてが可能ですか

一対一

多対一

多対多

一対多

可能であれば、JPAアノテーションで説明してください

4

1 に答える 1

3

[更新] コンポーネントは「スタンドアロン値」または「値オブジェクト」です。アウトバウンド関係、および仕様とのインバウンド関係が部分的にサポートされていますmappedByが、「コンポーネント」はファースト クラスの「エンティティ」ではありません。

多くの永続化機能 (クエリ、キャッシュ、ロック、一括読み込み、およびセッション制御機能) はすべて、主に「エンティティ」レベルで設計されています。特定のポイントを超えると、「コンポーネント」でできることには制限があります..そのような制限に遭遇するかどうかは、どれだけ深く行くかによって異なります.

しかし、実際にシナリオをモデル化するCountryと、外部キーを持つテーブルの有用性は制限されます。したがって、おそらく最も正しい設計は、Address.Country を非正規化して、オートコンプリートでサポートすることです。

これが好ましいアプローチである理由:

国が名前や国境を変更する場合、通常は「相対的に正規化された」方法ではありません。たとえば、ユーゴスラビア -> クロアチア、セルビア、モンテネグロ。スーダン -> スーダン、南スーダン。争われている国境は移動し、国は分裂しますが、実際には、特定された 1 つの国の名前を変更できることは一般的ではありません。

人と比較してください: 人は安定したアイデンティティを持ち、名前/住所を変更できますが、国にはこれが非常に便利な方法ではありません。

于 2013-09-07T10:30:49.623 に答える