哪种方案更适合管理User和UserPreference的hibernate关系?

时间:2013-01-25 14:55:17

标签: java hibernate

我也希望看到有经验的hibernate开发人员的一些意见,所以我可以自己详细说明。

我有以下情况:

  • 用户有许多UserPreference
  • UserPreference有一个用户
  • UserPreference有一个首选项
  • 首选项有很多UserPreference

我可以想到两种方法(省略一些字段以明确):

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;
}

在您看来,您认为哪一个更好?为什么?如果与我的不同,请随意展示自己的方法。感谢。

2 个答案:

答案 0 :(得分:1)

我认为第一个更好,只因为你可以做到

userPreferences.contains(aPreference);

检查给定的首选项存在(提供的hashCode和equals是否正常)。

答案 1 :(得分:1)

因为你刚接触休眠所以不要制造豆类数量的混乱。

仅使用用户和首选项bean。

因此,用户可能拥有号码首选项,而偏好可能包含多个用户。

双方使用多对多。