0

次の例を見てください。

アプリケーションには、さまざまな種類の連絡先のドメイン クラスが含まれています。

マネージャー、ショップスチュワード、パイロット、ベースボールコーチなど

それらはすべて個別のクラスであるため、データベース内に独自の個別のテーブルがあります。

一般的な要件は、複数の電子メール アドレスを記録することです。コードの重複を避けるために、src/groovy に EmailAddress という名前の @Validatable クラスを作成します。このクラスには、もちろん emailAddress と、そのアドレスのオプションのラベルが含まれています。

これらすべての異なるドメイン クラスに複数の電子メール アドレスを記録できるようにするには、EmailAddress を拡張して関係の所有者側にリンクする新しいドメイン クラスを作成するのが最善でしょうか?

例えば

class ManagerEmailAddress extends EmailAddress {
  static belongsTo = [Manager]
}

& 追加

 hasMany = [emails:ManagerEmailAddress]

マネージャークラスに?それとも、所有エンティティを識別するために、多くの識別子を持つ単一の EmailAddresses テーブルを用意する方がよいでしょうか?

コメント/返信ありがとうございます。

4

1 に答える 1

1

異なるテーブル/クラスに同じ構造を複製することは、めったに良い考えではありません(table-per-concrete-classは、ここでのコードの重複を減らします)。また、識別子との代替データベース関係は、親テーブルをマージする必要があることを示しています。

Personしたがって、またはのような一般的なスーパークラスを抽出して、そのクラスContactに接続することは理にかなっているかもしれませんEmails

于 2012-08-17T00:49:43.593 に答える