iBatis确实很容易将对象映射到遗留数据库系统。
最近NHibernate 1.2和2.0有一个功能集,可能会让你重新思考iBatis。
NHibernate使用复合键,它可以在较旧的数据库中频繁发生,它们并不总是令人愉快的工作,但支持是这样的。
NHibernate可以利用存储过程对实体和数据库视图进行CRUD操作。
集合可以是自定义存储过程或SQL查询。当外键关系不直接映射到另一侧的主键时,集合可以使用property-ref属性。
其中一些功能可能会剥夺nhibernate的性能/功能,即使用property-ref的Lazy Loading不起作用(完全不?),但大多数情况下都有这样的原因。
其他几点:(这是不是真的与你的遗留数据库,但仍然可以帮助决定技术选择)
NHibernate的社区显得比iBatis的要丰富得多。我在两个列表中,与iBatis组相比,NHibernate的支持量相当大。所以支持应该更容易。
也有越来越多的NHibernate的contrib /第三方工具。诸如NHibernate Profiler,Nhibernate查询分析器,NHibernate Contrib,Fluent NHibernate等等。
也许你可以扩展你相信iBatis目前拥有的优势。 NHibernate最近确实很活跃,并且获得了许多新功能,其中很多功能可以帮助传统/难以修改模式。
并回答这个问题,是的,我们使用NHibernate与遗留数据库,有可怕的关系,复合键,断开关系。我们还有少量基于iBatis的代码。我们不再编写任何更多的iBatis代码。
这将是我的下一个问题在stackoverflow - 感谢问! – SRO 2009-01-17 23:15:09