在浏览Hibernate Mapping示例时,我发现,
当一个类包含Collection时,它被声明为
class Role{
String roleName;
Set<Permission> permissionName;
}
class Permission{
String permissionName;
}
OR
class Role{
String roleName;
}
class Permission{
String permissionName;
}
class RolePermission{
String roleName;
String permissionName;
}
hbm.xml文件在两种风格上都有所不同。
Role
-----
role_id(PK) role_name
Permission
-----------
permission_id(PK) permission_name
Role_Permission
-----------------
role_permission_id role_id(FK) permission_id(FK)
这是应该使用的最佳方式,考虑到生成的查询中的图片中的休眠,会有什么不同。
答案 0 :(得分:0)
在这种情况下,请使用第一个。拥有一组权限的角色是更自然的方式。因为这就是您的业务问题所在:您希望角色对每个角色具有多种权限。 如果它不是应用程序背后的关系数据库,你甚至不会考虑使用第二个解决方案,它是对第一类结构的分解。
通常这就是你使用ORM(这里是Hibernate)的原因,这样你就可以拥有一个更方便的类结构,而不必担心如何将它分解为关系数据库。所以一定要选择第一个。
(你将失去什么:不能为rolePermissions轻松编写查询(但这不是一个问题,因为它只是一个“助手”类,它不会模拟任何现实世界的东西))
答案 1 :(得分:0)
我会使用第一种方法,因为在permissionName
和Permission
这两个类中你会发现RolePermission
有困难,因为它在第二种方式是多余的:
class Role{
private Integer id;
private String roleName;
private Set<Permission> permissionName;
// getter setters and necessary methods
}
// use one to many relationship from Role to Permission
class Permission{
private Integer id;
private String permissionName;
// getter setters and necessary methods
}