【问题标题】:On abstract classes in Java and Hibernate annotationsJava中的抽象类和Hibernate注解
【发布时间】:2010-10-19 17:08:17
【问题描述】:

我打算使用 Hibernate 创建一个依赖于 DB 的应用程序。我会有一些类似的班级,比如老师和学生等等。在 DB 中,它们会有一些名称相似的字段。所以我想知道我是否可以为标准字段(如 Name、SName 等)创建一个带有注释的类 Human,以便在教师学生等中扩展该类。它会起作用吗?有人这样用吗?

【问题讨论】:

    标签: java hibernate inheritance abstract-class


    【解决方案1】:

    我建议教师和学生不是人类的子类,而是人类可以扮演的角色。如果您将它们设为子类,那么您实际上是在说老师永远不能成为学生,反之亦然。 此外,如果一个人从学生变成老师(反之亦然),那么您就会失去该对象的任何关联和历史。 而是考虑角色。在这个例子中考虑组合和委托而不是继承。 请查看 Peter Coad 的书:Java 设计以了解更多信息。

    此外,如果您决定使用继承,您确实需要考虑表的实现:单个表(子类型属性为空列)单独的表或超类的单独表和子类的单独表。

    【讨论】:

    • 加入表格对我来说是一个真正的问题 - 我想使用 Google 应用引擎...
    【解决方案2】:

    Hibernate 广泛支持涉及继承和多态的不同场景。请参阅文档

    http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html

    简短的回答是,是的,您可以完全按照自己的意愿行事——创建一个基类,其中包含子类共有的字段。它的难度/参与程度取决于您如何构建表格。

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 2020-05-05
      • 2011-05-23
      • 2016-12-12
      • 2012-03-01
      • 1970-01-01
      • 2011-07-23
      • 2014-01-22
      • 2013-04-09
      相关资源
      最近更新 更多