从手工的休眠映射文件转移到注释是否值得付出努力?
我有一个webapp,其原始代码库是用手工制作的休眠映射文件开发的。从那时起,我已经相当熟练地"编码"我的hbm.xml文件。但是,这些天来,所有很酷的孩子都在使用注释。
因此,问题是:值得重构我的代码以使用休眠注释吗?除了时髦和现代,我还能得到什么吗?我会失去现有手编码映射文件中的任何控制权吗?
一个子问题是,要付出多少努力?我喜欢我的数据库精简而卑鄙。该映射仅覆盖了十几个领域对象,包括两组对象,一些子类和大约8个表。
亲爱的SOpedians,在此先感谢我们提供宝贵的意见。
解决方案
回答
通过使用注释而不是外部映射文件,我们将获得的一件事是,映射信息将位于类和字段上,从而提高了可维护性。我们添加一个字段,我们立即添加注释。我们删除一个,我们也删除注释。重命名类或者字段后,注释就在其中,我们也可以重命名表或者列。我们在类继承中进行了更改,这已得到考虑。稍后我们不必去编辑外部文件。这使整个过程更高效,更不易出错。
另一方面,我们将丢失映射文件用来提供给全局视图。
回答
"如果还没有破裂,那就不要修理!"
无论如何,我都是老式POJO / POCO,但是为什么要更改注释才能变得很酷呢?据我所知,我们可以将大多数内容用作注释,但是有时将更复杂的映射表示为XML。
回答
XML和注释都支持所有功能。
我们仍然可以使用xml声明覆盖注释。
至于付出的努力,我认为这是值得的,因为我们将能够在一处看到所有内容,而不必在代码和xml文件之间切换(除非我们当然使用了两个监视器;))
回答
The only thing you'll gain from using annotations
我可能会争辩说这是我们想通过使用注释获得的东西。因为NHibernate不能保证编译时间的安全性,所以这是下一件好事。
回答
我喜欢继续尝试新的和可能更好的东西,所以我要记住不要弄乱那些没有破损的东西。因此,如果现在将休眠映射放在单独的文件中对我们有用,那么我就不会对其进行更改。
回答
我最近在一个项目中都做过,发现:
- 我更喜欢为XML写注释(与Java的静态类型,IDE中的自动完成,重构等配合使用)。我喜欢看到所有东西都编织在一起,而不是在代码和XML之间来回走动。
- 在类中编码数据库信息。有些人认为这是粗略的和不可接受的。我不能说这困扰了我。它必须去某个地方,我们将重建WAR以进行更改。
- 实际上,我们一直使用JPA批注,但是在某些情况下,JPA批注还远远不够,因此必须使用Hibernate批注或者config进行调整。
- 请注意,我们实际上可以同时使用注释和hbm文件。可能是一个不错的混合体,它在注释中指定O部分,在hbm文件中指定R部分,但听起来麻烦多于其应有的价值。
回答
我肯定更喜欢注释,因为两者都使用过。它们更易于维护,并且由于我们不需要处理太多的类以进行重新映射,所以我认为这是值得的。注释使重构更加容易。
回答
"If it ain't broke - don't fix it!"
@Macka谢谢,我需要听听。并感谢大家的回答。
我处于非常幸运的位置,可以对我的作品进行疯狂的专业和创造性控制,并且可以出于几乎任何原因(不包括昂贵的东西)引入几乎任何技术,库或者工具,包括"因为所有很棒的孩子们正在使用它"。
一段时间后,我将在一个绿色项目中试用Hibernate或者JPA批注。不幸的是,我很少得到新的完全独立的项目。