通过阅读Grails中的docs,我发现以下语句:
我的问题是:太深了?
继承链中的5个扩展是否会使Grails哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣,哭泣?,10?,20?...。
最佳答案
到底有多深?是一个相当主观的问题。但是,当您考虑每个子类的表继承在数据库级别发生的情况时,有可能做出有根据的猜测。假设您具有以下域类:
class Employee {
String firstName
String lastName
static constraints = {
}
static mapping = {
tablePerHierarchy false
}
}
class Supervisor extends Employee {
String office
static constraints = {
}
}
您将得到两个表:
EMPLOYEE
和SUPERVISOR
。 EMPLOYEE
表将包含列id
,first_name
和last_name
。但是请注意,SUPERVISOR
表仅包含id
和office
列。这意味着,要检索
Supervisor
,GORM必须将两个表连接起来才能填充继承的属性。SELECT EMPLOYEE.ID, FIRST_NAME, LAST_NAME, OFFICE
FROM SUPERVISOR INNER JOIN EMPLOYEE
ON SUPERVISOR.ID = EMPLOYEE.ID
这些连接有可能导致性能降低。可以想象,10或20个继承级别将是灾难性的。但是,有几个表(特别是如果表很小)可能会没问题。
此外,深度继承层次结构表明域模型体系结构可能存在问题(例如,考虑使用Traits)。
您可以在我的文章here中了解有关这两种继承形式的更多信息。
关于grails - Grails中多少个域类继承太多?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34958400/