最佳实践:应该避免双向关系吗?

fla*_*ash 5 language-agnostic datamodel

我想知道处理这样的数据模型的最佳实践是什么: 简单的安全模型

我们有 3 个实体:

  • 角色
  • 用户
  • 允许

请注意,实体表示为 java 类并将通过休眠映射到数据库,无论如何我认为可以在不了解这些技术的情况下回答这个问题。

Role&UserRole&之间存在多对多关系Permission

这里可以有双向关系吗?所以,你可以要求Role给你他所有的成员,并要求User给你他所有的角色。

可以询问两个实体是非常舒服的,但是一个缺点是,无论何时删除关系,您都必须管理这两个实体。

例如,如果您Role从 a 中删除,User则还必须UserRole. 如果有很多这样的关系,这可能会很烦人。因此,我想知道最佳做法是什么。

Jen*_*der 4

我尽量避免双向关系。而是用 DAO/存储库中的显式查询替换一个方向。保持模型更简单,如果通过接口正确完成,应用程序将消除循环依赖