我应该始终或仅在必要时通过@Column和@Table指定名称

时间:2011-07-11 17:34:18

标签: java jpa eclipselink

这更多是一个最佳实践问题,希望从别人的经验中学习。您是否建议始终使用@Column(name =)和@Table(name =)显式指定列和表的名称?我有点担心一些实施细节可能会改变。此外,指定它可能会为重构我的代码提供一些弹性。我还认为它可能只是使代码更明确地显示状态名称。另一方面,它使得代码在许多不需要的地方变得更加冗长。

2 个答案:

答案 0 :(得分:4)

由于这是关于最佳实践的问题,我只能分享我的观点。据我所知,关键问题是“你的数据库设计有多流畅?” (这可能归结为你的领域模型是多么流畅)。

无论哪种方式,我都会提供表名和列名。 (这提供了一定程度的清晰度)。如果我在实体顶部编写了一个抽象层(将实体访问分组为功能单元),那么我可以在一定程度上优雅地处理实体设计中的更改。

不提供表名和列名只会降低代码的可读性,并且通过适当的设计,我们可以确保名称在重构时不会导致任何不适当的弹性。我应该能够重新生成我的实体模型,并且可以在抽象层中优雅地完成重构。希望我能清楚表达自己的想法。

答案 1 :(得分:1)

我的2分:对于一个给定的项目总是或永远做,但不要混淆。在大型组织中,我见过(有用?)数据库设计指南,强制您根据某些命名约定定义表和列,例如: 项目首字母缩略词 _ 计数器 _ 。这会产生像MYPROJ_CUSTOMER_1这样的表名,毫无疑问这不应该是我们Java类的名称。

顺便说一句:我是orm.xml的粉丝,它使您能够从java类中删除数据库细节并将其恢复为XML。我知道这不流行: - )