0

私は JPA/Hibernate、MySQL、および Spring Roo を使用しており、次の 2 つの異なるタイプのメンバーを持つアプリケーションをモデル化しているところです。

  • 男性会員
  • 女性会員

現在、男性メンバーと女性メンバーの両方に 1 つのテーブル/エンティティがあります。

ただし、メンバーが男性か女性かによって、一部のフィールド/属性が異なることに気付きました。

たとえば、次の可能な値を含む男性用の「ひげのスタイル」属性を設定できます:「トリムロング剃毛」。

ドメイン モデルでこれを表現するために、いくつかのオプションを考えました。

  1. ある種のJPA継承に進みます。ただし、どの戦略を選択すればよいか、またどの戦略が Hibernate でサポートされているかはわかりません。
  2. Member テーブル/エンティティに maleSpecificInfo と femaleSpecificInfo の 2 つのフィールドがあります。メンバーが女性の場合、maleSpecificInfo は null になり、その逆も同様です。

私の選択肢のどれが受け入れられるかについて、誰かアドバイスをいただけませんか。または、より良い代替手段を提供しますか?

4

1 に答える 1

1

私は2番目のアプローチが嫌いです。男性の人物オブジェクトには、私にはひどく臭いがする FemaleSpecificInfo へのリレーションが含まれている可能性があります。「継承より構成」の実装が正しいとは思いません。

Hibernate継承を試してみます。戦略を確認する必要があります。男性と女性がほとんどのデータを共有する場合は、Table per class hierarchyを使用します。

于 2012-09-15T16:18:35.713 に答える