当前位置:  开发笔记 > 数据库 > 正文

您是否将NHibernate用于具有遗留数据库的项目,这部分是您无法控制的?

如何解决《您是否将NHibernate用于具有遗留数据库的项目,这部分是您无法控制的?》经验,为你挑选了1个好方法。

对我来说,目前的答案是:不,我会使用iBatis,因为当数据库模型和对象模型不同步时,NHibernate很痛苦.如果我没有完全控制数据库,我最终会做很多工作.

我为什么这么问?

好吧,首先:我从未使用过NHibernate.我只是从表面上知道它.我已经了解了iBatis对旧数据库的优势.

第二:最近我与一个使用Hibernate的人进行了讨论(jep,在Hibernate之前没有'N').他告诉我,ORM框架现在非常先进并且提倡Hibernate.由于我对NHibernate不感兴趣,所以我没有跟踪最近的发展.

也许我是时候重新考虑我的答案了吗?



1> Jafin..:

iBatis很容易将对象映射到旧数据库系统.

最近NHibernate 1.2和2.0有一个功能集可能会让你重新思考iBatis.

NHibernate使用复合键,它们可以在较旧的数据库中频繁出现,它们并不总是令人愉快,但对此有支持.

NHibernate可以利用存储过程对实体进行CRUD操作,也可以使用数据库视图.

集合可以是自定义存储过程或SQL查询.当外键关系不直接映射到另一侧的主键时,集合可以使用property-ref属性.

其中一些功能可能会损害nhibernate的性能/功能,即lazy Loading with property-ref不起作用(根本没有?),但大多数情况下都有这个原因.

其他要点:(与您的旧数据库无关,但仍可帮助确定技术选择)

Nhibernate社区似乎比iBatis更丰富.我在两个列表上,与iBatis组相比,NHibernate的支持量非常大.所以支持应该更容易.

此外,NHibernate还有越来越多的contrib/3rd party工具.像NHibernate Profiler,Nhibernate查询分析器,NHibernate Contrib,Fluent NHibernate等等.

也许您可以扩展您认为iBatis目前拥有的优势.NHibernate最近一直非常活跃,并且已经获得了许多新功能,其中很多功能都有助于遗留/难以修改的模式.

回答这个问题,是的,我们确实将NHibernate与遗留数据库结合使用,遗留数据库具有糟糕的关系,复合键,破坏的关系.我们还有一些基于iBatis的代码.我们不再编写任何iBatis代码了.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有