経験豊富な Hibernate 開発者の意見も見たいので、自分自身の意見を詳しく述べたいと思います。
次のシナリオがあります。
- ユーザーには多くの UserPreference があります
- UserPreference には 1 人のユーザーがいます
- UserPreference には 1 つの設定があります
- プリファレンスには多くの UserPreference があります
これを行うには 2 つの方法が考えられます (わかりやすくするために一部のフィールドを省略しています)。
1) ユーザー側の UserPreference:
@Entity
public class User implements Serializable {
private String username;
private String password;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
private Set<UserPreference> userPreferences;
}
@Entity
public class UserPreference implements Serializable {
private String value;
@ManyToOne
private Preference preference;
}
@Entity
public class Preference implements Serializable {
private String preferenceName;
private String defaultValue;
}
2) UserPreference 側のユーザー:
@Entity
public class UserPreference implements Serializable {
private String value;
@ManyToOne
private User user;
@ManyToOne
private Preference preference;
}
@Entity
public class User implements Serializable {
private String username;
private String password;
}
@Entity
public class Preference implements Serializable {
private String preferenceName;
private String defaultValue;
}
あなたの意見では、どちらが優れていると思いますか? なんで?私の方法とは異なる場合は、自由に独自の方法を示してください。ありがとう。