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 代码。