关于Java和Hibernate注释中的抽象类

时间:2010-10-19 17:08:17

标签: java hibernate inheritance abstract-class

我计划使用Hibernate创建一个依赖于DB的应用程序。我会有一些类似的课程,如老师和学生等。在DB中,它们将具有一些具有相似名称的字段。所以我想知道我是否可以为Name,SName等标准字段创建一个带有注释的类,以便在教师学生中扩展该类等等。它会起作用吗?是否有人以这种方式使用它?

2 个答案:

答案 0 :(得分:3)

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

此外,如果您决定使用继承,您确实需要考虑表实现:单个表(对于子类型attribs使用null cols)单独的表或单个表用于超类,单独的表用于子类。

答案 1 :(得分:1)

Hibernate对涉及继承和多态的不同场景提供了广泛的支持。参见文档

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

简短的回答是,是的,您可以完全按照自己的意愿行事 - 创建一个包含子类通用字段的基类。它的难易程度取决于你如何构建表格。