たとえば、Usersエンティティにはfriendsプロパティがありますが、このfriendsプロパティを設計するには、次の2つの方法があります。
- friendsプロパティは、すべてのユーザー名が「、」で分割された文字列です。このため、読み取りや変更が困難です。
- 友達のプロパティはのようなセットです
Set<Users>
が、このようにエンティティを書き込む方法がわかりませんか?
誰もがベストプラクティスを知っていますか?
これは、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);
が複数の友達を持つことができる場合、次のようにエンティティに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
間の関係の結合テーブルが作成されますUser
。User
テーブルには 'id' と 'name' の 2 つの列があります。user_friend
テーブルには「user_id」と「friend_id」の 2 つの列があります。の列は両方ともテーブルuser_friend
への外部キーです。User