有没有人真正想要并在ORM工具上使用继承支持,如果是,您认为哪一个提供最好的支持?
或者ORM继承是"天上的馅饼"概念?
我已经使用了Hibernate的继承(以及一些使用Django),并且非常遗憾.
对于域类,"基于继承的组合"原则尤其如此.虽然我同意在某些情况下继承在模型级别有意义,但在大多数情况下,继承将为您提供一个非常静态的域模型,其中一个对象将无法更改为另一个类.
我还发现大多数开发人员对数据库级别的继承概念不满意,因此维护变得更加复杂.
最后,还有一些技术问题,比如Hibernate设置的代理将隐藏对象的实际类.它使"实例"表现得很苛刻.当然,你可能会说"实例"是代码气味,也许这是另一个提示,组合可能是一个更好的解决方案......
我非常喜欢这个问题.我已经使用ORM工具(Toplink,现在是eclipselink,Hibernate)一段时间了,我一直认为这是JPA文档中引用的,但我从来没有真正需要它.基本上我的理念是ORM只是为了阻止你编写tedius代码来提取数据库的记录.这确实是一个巨大的节省时间,它可以防止你犯下愚蠢的错误.当然你可以用这个做一些奇特的东西,但为什么不把它保存到控制器(如果你跟随MVC)而不是把它粘在模型中?