【问题标题】:What is the use case of entity inheritance strategies in hibernate?hibernate中实体继承策略的用例是什么?
【发布时间】:2016-11-03 00:26:39
【问题描述】:

我非常了解继承策略,例如:

1.每个层次结构的表

2.每个具体类的表

3.每个子类的表

那么它们都是继承策略,那么我们应该根据什么来选择呢?

【问题讨论】:

    标签: hibernate jpa inheritance orm


    【解决方案1】:

    休眠继承

    为了在hibernate中实现继承,Hibernate为我们提供了3种不同类型的策略。

    每个类的表的休眠继承

    每个具体类的表的休眠继承

    每个子类的表的休眠继承

    要将继承类映射到数据库表,我们可以使用上述任何一种策略。没有哪个策略是最佳策略的概念,根据我们的应用需求,我们可以选择上述策略之一。

    每个类的表的休眠继承:

    如果我们想将所有类层次结构的数据保存到数据库的单个表中,我们可以选择这种策略。对于每个类策略的这个表以及对象详细信息,hibernate 将插入一个称为 discriminator 的特殊值,以便在表中轻松识别 pojo 类对象。

    每个具体类的表的休眠继承:

    当需要将每个具体的继承类对象存储在单独的数据库表中时,选择了这种休眠继承策略。对于这个策略,鉴别器是可选的。

    每个子类的表的休眠继承:

    如果我们想将一个超类及其子类映射到它自己的数据库表中,我们可以选择这种休眠继承策略。一个子类表有一个主键,它也是一个外键来获取与超类表的关系。

    欲了解更多信息和示例:Inheritance mapping

    【讨论】:

    • 请给我的问题打分,以便我给你打分,我是这里的新用户
    • 如果我的回答解决了你的问题..接受它作为一个有效的答案..如果不是你可以询问更多信息..
    • 你给出的答案,我觉得它的解释不够,因为我知道如果我使用每个子类的表,在这个我不会有问题,例如假设你有一个父类人员,以及两个具体类 Employee 和 Customer,在 TPSC 中我可以存储 Person 的多个角色,就像员工可以是您的客户一样,但我们不能将这些信息存储在其他两个中,所以我为什么要去找他们,我们应该总是使用 TPSC 策略。
    • 这取决于您的需求,Hibernate 提供了 3 种不同类型的策略,因此如果您的情况 TPSC 可以满足您的需求,其他人会发现 TPCC 或 TPC 更适合他们的需求..
    • 它已经在我的回答中完成了..不要忘记检查链接中的文档..
    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多