1

我也想看看有经验的hibernate开发人员的一些意见,所以我可以详细说明一下。

我有以下情况:

  • 用户有很多 UserPreference
  • UserPreference 有一个用户
  • UserPreference 有一个 Preference
  • Preference 有很多 UserPreference

我可以想到两种方法(为了清楚起见,省略了一些字段):

1)用户端的用户偏好:

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

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

4

2 回答 2

1

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

userPreferences.contains(aPreference);

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

于 2013-01-25T14:58:44.977 回答
1

由于您是休眠新手,因此不要弄乱 Beans 的数量。

仅使用 User 和 Preference bean。

因此,用户可能有多个偏好,偏好可能有多个用户。

在双方使用多对多。

于 2013-01-26T08:24:09.557 回答