【问题标题】:Grails: What is the difference between extending and embedding a domain class?Grails:扩展和嵌入域类有什么区别?
【发布时间】:2015-07-26 10:53:12
【问题描述】:

我对 Grails 框架非常陌生,所以请多多包涵。

尽管如此,我对扩展域类和嵌入对象之间的功能差异感到有些困惑。
从数据库的角度来看,它们都做同样的事情。嵌入对象时,所有类的所有属性都存储在一个表中。类似地,当扩展一个类时(使用 table-per-hierarchy),所有类的所有属性都存储在一个表中。

我确定这两者之间存在功能差异,所以我想我会问这个问题。
你什么时候使用其中一个?

【问题讨论】:

    标签: grails grails-domain-class


    【解决方案1】:

    唯一的技术区别是在扩展类时能够通过每个子类属性的表拥有多个表。否则,它们在使用上是相同的。

    不过,也就是说,通过扩展另一个类,您也在类结构中对其进行建模,以便您可以利用 Java/Groovy 的 instanceof 和多态特性。

    【讨论】:

    • 我认为您只能通过 table-per-subclass 属性拥有多个表,而不是通过 table-per-hierarchy。我完全忘记了 instanceof 和多态的使用。谢谢。
    • 你是对的,它是每个子类。我已经更新了答案。
    猜你喜欢
    • 2012-08-11
    • 2020-12-22
    • 2018-09-21
    • 2018-03-06
    • 1970-01-01
    • 2018-10-20
    • 2020-06-17
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多