【问题标题】:Modeling qualified relations in Hibernate在 Hibernate 中建模合格的关系
【发布时间】:2014-04-05 04:11:05
【问题描述】:

我有一个关系模型,其中实体通常与两个限定符 start_dateend_date 建立关系,以便保留过去关系的历史记录。

当遇到使用 Hibernate 创建数据模型的任务时,我遇到了处理这些打破通常多对多关系案例的关系的问题。例如,假设 user 可以拥有特定的访问权限 permission(这实际上是一个真实案例),我们想要对用户拥有的权限历史进行建模:

| USER   |      | has_permission |      | PERMISSION |
|--------|      |----------------|      |------------|
| userId |------|userId          |------|permissionId| 
| user   |      |permissionId    |      |permission  |
----------      |start_date      |      -------------
                |end_date        |
                ------------------

现在你将如何在类模型中做到这一点?在常规情况下,创建带有Permissions 列表的User 类不再有效。鉴于我有很多实体,我不想最终得到很多“HasX”类,这些类只包含另一个引用以及 startDate 和 endDate。

解决这个问题的常用方法是什么?

我使用 Hibernate,但我猜答案与语言无关。

【问题讨论】:

    标签: java hibernate class language-agnostic uml


    【解决方案1】:

    每当你想维护一个多对多关联(或关系类型)的历史,比如hasPermission,你必须把它变成一个类,例如PermissionByUser,具有定义特定链接(或关系)的有效时间的时间间隔属性,例如MichelReap-hasPermission-删除用户。因此,您会得到如下模型:

    用一个类和两个多对一关联替换一个多对多关联是一种众所周知的模式(例如,参见my tutorial 的第 5 章)。请注意,User 侧和Permission 侧的“点”表示要添加到PermissionByUser 类的相应引用属性(userpermission)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2021-05-28
      相关资源
      最近更新 更多