2

我有一个 webapp,其原始代码库是使用手工制作的 hibernate 映射文件开发的。从那时起,我已经相当精通“编码”我的 hbm.xml 文件。但是这些天所有酷孩子都在使用注释。

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

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

亲爱的 SOpedians,提前感谢您提供明智的意见。

4

8 回答 8

7

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

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

于 2008-09-17T11:47:51.200 回答
4

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

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

于 2008-09-17T11:46:52.090 回答
3

我最近在一个项目中做了两个,发现:

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

尽管我喜欢继续进行新的和可能更好的事情,但我需要记住不要弄乱没有损坏的东西。因此,如果现在将休眠映射放在单独的文件中对您有用,我不会更改它。

于 2008-09-17T11:50:05.283 回答
1

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

于 2008-09-18T03:36:57.953 回答
0

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

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

于 2008-09-17T11:48:48.437 回答
0

使用注释您将获得的唯一好处

我可能会争辩说,这是您希望从使用注释中获得的东西。因为您没有使用 NHibernate 获得编译时安全性,所以这是下一个最好的事情。

于 2008-09-17T11:49:22.850 回答
0

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

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

虽然我处于非常幸运的位置,可以对我的工作进行大量的专业和创造性控制,并且可以出于任何原因(排除昂贵的东西)引入几乎任何技术、库或工具,包括“因为所有很酷的孩子们正在使用它” ......移植现有项目核心的重要部分并没有什么意义。

一段时间后,我会在一个未开发项目中试用 Hibernate 或 JPA 注释。不幸的是,我很少得到新的完全独立的项目。

于 2008-09-18T14:18:39.987 回答