我想知道最佳做法是如何处理这样的数据模型:
我们有3个实体:
请注意,实体表示为java类,并将通过hibernate映射到数据库,无论如何,我认为可以在不了解这些技术的情况下回答问题。
Role
&之间存在多对多的关系。 User
以及Role
和{}之间Permission
。
在这里建立双向关系是否可以?那么,您可以要求Role
向您提供所有成员并要求User
给您他所有的角色。
您可以向两个实体询问是非常自在的,但是一个缺点是,无论何时删除关系,您都必须管理这两个实体。
E.g。如果您从Role
删除User
,则还必须从User
中删除Role
。如果存在许多这种关系,这可能会非常烦人。因此,我想最好的做法是什么。
答案 0 :(得分:4)
我尽量避免双向关系。而是在DAO / Repository中使用显式查询替换一个方向。保持模型更简单,如果通过接口正确完成,应用程序清理循环依赖
答案 1 :(得分:1)
这里有双向关系吗?所以,你可以要求Role给你所有的成员,并要求用户给你他所有的角色。
是。如果你真的需要两种方式的导航性,那么就没有理由阻止你以最简单的方式获得它。
一个缺点是,无论何时删除关系,都必须管理两个实体。
这取决于实现,可以以同步两个“结束”的方式实现数据模型。