为什么要使用Hibernate注解?

6

为什么它很重要?XML映射有哪些优势?你能解释一下吗?谢谢。

2个回答

14

这并不像“强制执行”那样重要。它是一种不同的可能性,具有优点和缺点。

优点:

  • 编译时检查:现在在IDE中编写Java(而不是Xml)非常用户友好。没有更多的拼写错误,在启动应用程序时发现(增量编译),需要记住的内容也不多(自动补全)...
  • 与代码本地化(类级别):使用一个带注释的java文件,而不是打开两个文件(java和xml),就可以获得全部信息,你只需打开一个文件。这样做不仅减少了重复性工作,而且长期来看更快。
  • 与代码本地化(方法或字段级别):因为注解放在方法(或字段)上,所以不需要指定它所属的方法。这个冗余信息被省略了,从而更短、始终保持一致(即使进行代码重构)。维护速度更快。
  • 工具(javadoc, 使用反射的其他工具)可以利用注解满足一些其他需求。
  • 注解比XML更新,团队利用当时收到的输入提供了。XML也有一些,但由于兼容性原因不能进行太多更改。通常情况下,使用注解技术,你不需要编写任何注解,它就可以工作。想象一下节省的时间,尤其是在开发过程中。

@skaffman:已经修复了。希望我的修改评论能让你更开心 :-) - Robert Munteanu
@Robert,感谢您的修订,我本来也要自己做的。 - KLE
@skaffman,我真的很喜欢你的评论,让我笑了:-)。你可能已经猜到了,我是个外国人(实际上是法国人,对此很抱歉;-)),英语水平相当差。我希望我能让消息中的错别字保留下来,这样你的评论就有意义了,同时还能给出正确的拼写...怎么办? - KLE
3
@KLE: 很棒的回答,不必担心错别字 - 这是SO的一个好处。 - Robert Munteanu

2

我不理解注释(annotation)背后的所有炒作,我更喜欢HBM并有以下原因支持我的选择(这些优点对我来说比拼写错误和编译时检查更重要):

  1. 责任分离/单一职责:使用HBM,你可以在HBM中处理所有ORM相关的内容。实体和领域逻辑(与表结构无关)则在Java类中编写。你的数据库和Java类可以相互独立修改(只需要更新HBM即可)。
  2. 你的代码不会被注释淹没。我更喜欢专注于领域逻辑。注释会增加很多噪声。

如果HBMs组织得好(每个Java类一个HBM,命名一致),在两者之间导航将变得容易。JUnit测试和一些纪律将消除对编译时检查的需求。至于默认值,我认为如果Hibernate可以完全不使用注释工作,那么它应该能够完全不使用XML(从概念上讲 - 不知道是否现实可行)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接