0

正如上面的红色块(警告这是一个主观问题并且可能已关闭),可能没有关于此问题的石刻法,但我不明白为什么这需要关闭一个问题。

...一边咆哮一边

我计划将 Hibernate 实现为我的持久性框架,这可能会在实现时解决我的问题,但我有可以转换为类和子类的 DB 表(省略了现实生活中存在的许多细节和复杂性 :)):

//dbo.a with column Name
class a {
  public String Name;
}

//dbo.b with column Name and a foreign key to dbo.a
class b extends a {
  public String Name;
}

因此,对于应该做什么以及为什么:

阴影:
我可以将这些保留原样,这需要一些反射技巧(根据http://forums.sun.com/thread.jspa?threadID=5419973),当使用编译时类型未知的对象时。

复合名称:
我可以在其类名之前命名我的所有字段,即a.aNameand b.bName,这在现实生活中变得非常丑陋:Door.DoorNameRotatingDoor.RotatingDoorName

Getter 和 Setter:
我没有提到这一点,因为对于 JavaBeans,这些将派生自字段名称,而且我相信 Hibernate 使用带注释的 POJO。

为了稍微影响结果,阴影似乎是最健壮的,至少在我的情况下,类a扩展了Name定义的抽象类,然后在适用时b使用自己的阴影Name。使用复合名称意味着如果我想向NickName所有数据库表添加一列,那么我必须将该字段添加到每种类型(那么继承的意义何在?!)

最后,我决定找出那些经历过实施其中一种或多种技术的利弊的人在这个问题上的看法;或者那个方便的石头蚀刻最佳实践会做:)

-Nomad311

4

1 回答 1

0

如果您在所有子类中都需要它,您应该只在基类中定义您的成员。hibernate 为类树提供了各种类型的映射。看看手册中的继承映射来感受一下。

您可以通过 xml 文件或注释定义映射。

于 2009-12-14T16:12:41.923 回答