正如上面的红色块(警告这是一个主观问题并且可能已关闭),可能没有关于此问题的石刻法,但我不明白为什么这需要关闭一个问题。
...一边咆哮一边
我计划将 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.aName
and b.bName
,这在现实生活中变得非常丑陋:Door.DoorName
和RotatingDoor.RotatingDoorName
Getter 和 Setter:
我没有提到这一点,因为对于 JavaBeans,这些将派生自字段名称,而且我相信 Hibernate 使用带注释的 POJO。
为了稍微影响结果,阴影似乎是最健壮的,至少在我的情况下,类a
扩展了Name
定义的抽象类,然后在适用时b
使用自己的阴影Name
。使用复合名称意味着如果我想向NickName
所有数据库表添加一列,那么我必须将该字段添加到每种类型(那么继承的意义何在?!)
最后,我决定找出那些经历过实施其中一种或多种技术的利弊的人在这个问题上的看法;或者那个方便的石头蚀刻最佳实践会做:)
-Nomad311