您是否会将 NHibernate 用于具有遗留数据库的项目,而该数据库部分超出了您的控制范围?

2023-11-29

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

我为什么要问?

好吧,首先:我从未使用过 NHibernate。我只是从表面上知道这一点。我已经了解了 iBatis 对于遗留数据库的优势。

第二:最近我和一个使用 Hibernate 的人进行了讨论(jep,Hibernate 之前没有“N”)。他告诉我现在ORM框架已经相当先进了,提倡Hibernate。由于我对NHibernate不感兴趣,所以没有跟踪最近的进展。

也许我是时候重新考虑我的答案了,或者不是?


iBatis 当然很容易将对象映射到遗留数据库系统。

最近,NHibernate 1.2 和 2.0 的功能集可能会让您重新思考 iBatis。

NHibernate 使用复合键,这在较旧的数据库中经常出现,它们并不总是令人愉快地使用,但对此有支持。

NHibernate 可以利用存储过程对实体以及数据库视图进行 CRUD 操作。

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

其中一些功能可能会降低 nhibernate 的性能/功能,即使用 property-ref 进行延迟加载不起作用(根本不起作用?),但大多数情况下都是有原因的。

其他要点:(与您的遗留数据库并不真正相关,但仍然可以帮助决定技术选择)

Nhibernate 社区看起来比 iBatis 丰富得多。我在这两个列表中,并且与 iBatis 组相比,对 NHibernate 的支持量相当大。所以支持应该更容易。

此外,NHibernate 的 contrib/3rd 方工具数量也在不断增加。例如,NHibernate Profiler、NHibernate 查询分析器、NHibernate Contrib、Fluent NHibernate 等。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您是否会将 NHibernate 用于具有遗留数据库的项目,而该数据库部分超出了您的控制范围? 的相关文章

随机推荐