有关我的回答是目前没有,我会使用iBatis的,因为NHibernate的是一种痛苦,当数据库模型和对象模型不同步。如果我没有在我结束了很多工作的数据库完全控制。

为什么要问?

好了,首先:我从来没有使用过NHibernate的。我只知道它从表面。我已阅读关于iBatis的用于遗留数据库的优点。

二:最近,我有与别人谁使用Hibernate工作(JEP,没有休眠之前“N”)的讨论。他告诉我,ORM框架现在是相当先进的,主张休眠。由于我没有兴趣NHibernate的,我没有跟踪最近的事态发展。

也许我的时间重新考虑我的回答,或不?

有帮助吗?

解决方案

iBatis的肯定是易于映射对象遗留数据库系统。

最近NHibernate的1.2和2.0具有的功能集,可能使你重新考虑iBatis的。

NHibernate的作品与组合键,可以在旧版本的数据库频繁发生,他们并不总是令人愉快的一起工作,但支持是有这个。

NHibernate的可利用用于CRUD操作存储过程上的实体,也数据库视图。

集合可以被自定义存储过程或SQL查询。类别可以使用属性-ref属性时的外键关系不直接映射到在另一侧的主键。

其中的一些功能可能会从性能/功耗NHibernate的,即延迟加载财产-REF走不工作(在所有?),但大多数情况下有原因的。

其他几点:(这是不是真的与你的遗留数据库,但仍然可以帮助决定技术选择)

NHibernate的社区显得比iBatis的丰富得多。我在这两个列表,并与iBatis的组的支持NHibernate的量是相当大的。所以支持应该比较容易。

也有是的的contrib /第三方工具NHibernate的不断增长的量。像NHibernate的探查,NHibernate的查询分析器,NHibernate的的Contrib,功能NHibernate事情仅举几例。

也许你可以在你所相信的优势iBatis的目前有扩大。 NHibernate的无疑是最近相当活跃,并已取得了许多新的功能,其中很多都有助于在传统/硬修改架构。

和回答的问题,是的,我们确实使用NHibernate的与具有可怕的关系遗留数据库,组合键,关系破裂。我们仍然也有基于iBatis的少量的代码。我们不再写任何更多iBatis的代码虽然。

其他提示

是,考虑NHibernate的。这是有原因的黄金标准。我听说,iBATIS的支持疯狂映射的可能性,但与NHibernate的IUserType可以在地图上任何东西,甚至真的很奇怪列。

@Ahmad,ORM的整个点是防止物件与您的模式之间的紧密耦合。如果你有这样的问题,你就错了。

而且,与NHibernate有大量的用于定制查询,式属性和存储的过程的选项。 HQL是非常强大和标准是柔性的。

我想你会做你的客户帮倒忙,如果你不这样做,至少秒杀NHibernate的。

我已经在现有的应用程序被使用NHibernate。我用它为所有新的发展,我也没有过任何有只是没有令人信服的理由,但关于它的伟大工程,该项目新的东西移植现有的东西的意图。

如果您打算将代码移植过,那么你应该能够更改数据库与您的域模型匹配较好,没有太大的影响(这取决于如何泄漏你的数据库是谁,即访问)。然而更改域模型会影响应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top