多对多的两个关联对象,那种方案更好?
有两个对象 User Role,二者是多对多的关系:
第一种设计方案:
public class User extends BaseObject {
private static final long serialVersionUID = -4129505469133941097L;
protected long userID;
protected String username;
/**
* <code>flag</code> 用户具有的roles
*/
protected Set roles = new HashSet();
/**
* @hibernate.id column="userID" generator-class="native"
*/
public long getUserID() {
return userID;
}
public void setUserID(long userID) {
this.userID = userID;
}
/**
* @hibernate.property column="username" length="60"
*/
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
/**
* @return roles
* @hibernate.set table="user_role" cascade="save-update" lazy="false"
* @hibernate.collection-key column="userID"
* @hibernate.collection-many-to-many class="Role"
* outer-join="auto" column="roleID"
*/
public Set getRoles() {
return roles;
}
public void setRoles(Set roles) {
this.roles = roles;
}
}
public class Role extends BaseObject {
private static final long serialVersionUID = 949411947771767L;
/**
* <code>id</code> 角色id
*/
private String roleID;
/**
* <code>name</code> 角色名称
*/
private String rolename;
/**
* <code>des</code> 角色说明
*/
private String description;
/**
* <code>des</code> 拥有该角色的users
*/
private Set users = new HashSet();
/**
* @hibernate.id column="roleID" length="40" generator-class="assigned"
*/
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
/**
* @hibernate.property column="description" length="50"
*/
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
/**
* @hibernate.property column="rolename" length="30"
*/
public String getRolename() {
return rolename;
}
public void setRolename(String rolename) {
this.rolename = rolename;
}
/**
* @return Returns the users.
* @hibernate.set table="user_role" cascade="save-update" lazy="false"
* inverse="true"
* @hibernate.collection-key column="roleID"
* @hibernate.collection-many-to-many class="User"
* column="userID"
*/
public Set getUsers() {
return users;
}
public void setUsers(Set users) {
this.users = users;
}
}
第二种设计方案:
public class User extends BaseObject {
private static final long serialVersionUID = -4129505469133941097L;
protected long userID;
protected String username;
/**
* @hibernate.id column="userID" generator-class="native"
*/
public long getUserID() {
return userID;
}
public void setUserID(long userID) {
this.userID = userID;
}
/**
* @hibernate.property column="username" length="60"
*/
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
public class Role extends BaseObject {
private static final long serialVersionUID = 949411947771767L;
/**
* <code>id</code> 角色id
*/
private String roleID;
/**
* <code>name</code> 角色名称
*/
private String rolename;
/**
* <code>des</code> 角色说明
*/
private String description;
/**
* @hibernate.id column="roleID" length="40" generator-class="assigned"
*/
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
/**
* @hibernate.property column="description" length="50"
*/
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
/**
* @hibernate.property column="rolename" length="30"
*/
public String getRolename() {
return rolename;
}
public void setRolename(String rolename) {
this.rolename = rolename;
}
}
public class UserRole extends BaseObject{
private static final long serialVersionUID = 949445679834343L;
private long id;
/**
* <code>roleID</code> 角色id
*/
private String roleID;
/**
* <code>userID</code> 用户id
*/
private String userID;
/**
* @hibernate.id column="id" generator-class="increment"
*/
public String getId() {
return id;
}
public void setId(long ID) {
this.id = ID;
}
/**
* @hibernate.property column="roleID" length="40"
*/
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
/**
* @hibernate.property column="userID"
*/
public long getUserID() {
return userID;
}
public void setUserID(long id) {
this.userID = id;
}
}
以上两种方案,哪种比较好?多对多关联后的两个对象的添加和删除等操作是不是有些复杂?