2

たとえば、Usersエンティティにはfriendsプロパティがありますが、このfriendsプロパティを設計するには、次の2つの方法があります。

  1. friendsプロパティは、すべてのユーザー名が「、」で分割された文字列です。このため、読み取りや変更が困難です。
  2. 友達のプロパティはのようなセットですSet<Users>が、このようにエンティティを書き込む方法がわかりませんか?

誰もがベストプラクティスを知っていますか?

4

2 に答える 2

2

これは、Hay による Enterprise Model Patterns でカバーされています。

パーティは個人 (または組織) を表します。

Party
id
name

パーティは、一定期間にわたって別のパーティと関係を持つことができます。

PartyRelationship
fromPartyId
toPartyId
fromDate
toDate nullable

基本図:

Party -< PartyRelationship >- Party

サンプル SQL:

insert into party values (1, 'Jerry');
insert into party values (2, 'Neil');

insert into partyRelationship values (1, 2, getDate(), null);
于 2012-07-13T03:26:26.930 に答える
1

が複数の友達を持つことができる場合、次のようにエンティティにUser注釈を付けることができます。User

@Entity
public class User
{
    @Id
    private Long id;
    private String name;
    @ManyToMany
    @JoinTable(
            name = "user_friends",
            joinColumns =
            { @JoinColumn(
                    name = "user_id") },
            inverseJoinColumns =
            { @JoinColumn(
                    name = "friend_id") })
    private Set<User> friends;
}

このようにして、テーブルが作成され、sUser間の関係の結合テーブルが作成されますUserUserテーブルには 'id' と 'name' の 2 つの列があります。user_friendテーブルには「user_id」と「friend_id」の 2 つの列があります。の列は両方ともテーブルuser_friendへの外部キーです。User

于 2012-07-14T14:22:58.720 に答える