我有一个网络应用程序,其原始代码库是使用手工制作的休眠映射文件开发的。从那时起,我已经相当熟练地“编码”我的 hbm.xml 文件。但现在所有的酷孩子都在使用注释。

所以,问题是: 值得付出努力吗 重构我的代码以使用 hibernate 注释?除了时髦和现代之外,我还能得到什么吗?我是否会失去现有手工编码映射文件中的任何控制权?

一个子问题是, 需要付出多少努力? 我喜欢我的数据库精简而简洁。该映射仅涵盖十几个域对象,包括两个集合、一些子类和大约 8 个表。

亲爱的 SOpedians,提前感谢您提供的知情意见。

有帮助吗?

解决方案

“如果它没有坏,就不要修理它!”

无论如何,我是一个老式的 POJO/POCO 类型的人,但为什么要改变注释只是为了酷呢?据我所知,您可以通过注释来完成大部分工作,但更复杂的映射有时会更清晰地表达为 XML。

其他提示

使用注释而不是外部映射文件可以获得的一件事是,您的映射信息将位于类和字段上,从而提高了可维护性。您添加一个字段,您立即添加注释。删除一个,也就删除了注释。您重命名类或字段,注释就在那里,您也可以重命名表或列。当您对类继承进行更改时,它会被考虑在内。您不必稍后去编辑外部文件。这使得整个事情更加高效并且不易出错。

另一方面,您将丢失映射文件曾经提供给您的全局视图。

我最近在一个项目中完成了这两项工作,发现:

  1. 我更喜欢将注释写入 XML(与 Java 静态类型、IDE 中的自动完成、重构等配合良好)。我喜欢看到所有的东西都交织在一起,而不是在代码和 XML 之间来回切换。
  2. 对类中的数据库信息进行编码。有些人觉得这很恶心而且不可接受。我不能说这让我烦恼。它必须去某个地方,无论如何我们都会重建战争以进行改变。
  3. 我们实际上一直使用 JPA 注释,但肯定存在 JPA 注释不够的情况,因此必须使用 Hibernate 注释或配置进行调整。
  4. 请注意,您实际上可以使用注释和 hbm 文件。可能是一个很好的混合体,它在注释中指定 O 部分,在 hbm 文件中指定 R 部分,但听起来比它的价值更麻烦。

尽管我很喜欢转向新的、可能更好的东西,但我需要记住不要弄乱那些没有损坏的东西。因此,如果将休眠映射放在单独的文件中现在对您有用,我不会更改它。

我绝对更喜欢注释,因为两者都使用过。它们更易于维护,并且由于您不需要处理那么多要重新映射的类,所以我认为这是值得的。注释使重构变得更加容易。

XML 和注释都支持所有功能。您仍然可以使用 xml 声明覆盖您的注释。

至于付出的努力,我认为这是值得的,因为您将能够在一个地方看到所有内容,而无需在代码和 xml 文件之间切换(当然,除非您使用两个监视器;))

使用注释您将获得的唯一一件事

我可能会认为这是 您希望通过使用注释获得的东西。因为 NHibernate 无法保证编译时安全,所以这是退而求其次的事情。

“如果它没有坏,就不要修理它!”

@Macka - 谢谢,我需要听听。感谢大家的回答。

虽然我非常幸运地拥有一个 疯狂的 对我的工作进行专业和创造性的控制,并且可以出于任何原因引入任何技术、库或工具(不包括昂贵的东西),包括 “因为所有很酷的孩子都在使用它”...移植现有项目核心的重要部分并没有真正的意义。

我将在某个时候通过一个新项目尝试 Hibernate 或 JPA 注释。不幸的是,我很少得到新的完全独立的项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top