2009-12-14 48 views
0

由于上面的红色块(警告这是一个主观问题,可能会被关闭),可能没有石蚀法,但我不明白为什么将需要结束一个问题。字段名称最佳做法(阴影或复合名称)

...咆哮一边

我就准备实施Hibernate作为我的持久性框架,它可以在实施解决我的问题,但我有翻译成类和子类(许多细节和复杂数据库表和

//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.aNameb.bName,它得到在现实生活中真的很丑的:Door.DoorNameRotatingDoor.RotatingDoorName

getter和setter:
我没有”不要提这一点,因为使用JavaBeans这些将从字段名称中派生出来,我相信Hibernate使用带注释的POJO。

要影响的结果一点,阴影似乎是最强大的,至少在我的情况下类a扩展与Name一个抽象类定义,那么b阴影与自己Name时适用。使用复合名称将意味着,如果我想要添加一个NickName列到我所有的数据库表中,那么我将不得不将该字段添加到每种类型(然后什么是继承?!)

最后我决定找出那些希望谁经历过这些技术的一种或多种实施方式的利弊的人必须在这个问题上发表意见;或者石头方便蚀刻的最佳实践会做:)

-Nomad311

回答

0

,如果你需要它的所有子类,你应该只定义在基类中的成员。 hibernate为类树提供了各种类型的映射。看看手册中的Inheritance mapping以获得它的感觉。

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

+0

感谢您的提示,在休息时间我会检查出来并阅读Hibernate。我很高兴我没有花时间在我的数据层上......它会吸引实施这些解决方案之一,发现它与Hibernate或其他任何持久性框架不兼容! – LostNomad311 2009-12-16 03:50:52