我正在寻找一些比较NHibernate和iBATIS.NET的最新信息.我发现了一些搜索谷歌的信息,但其中很多都适用于这些产品的Java版本或者过时了.
我感兴趣的一些特定事项:
如果您同时控制数据模型和应用程序,哪个更好?
iBATIS反复被称为更容易学习 - 这是否会产生长期维护后果(即易于启动,难以维护)?
是否可以轻松切换底层数据库供应商?
您的开发人员需要多么熟练的SQL?
对方缺少的任何一个主要特征是什么?
这两种产品是否更适合特定类型的应用?
观察到的好处和缺点的现实世界的例子表示赞赏!
编辑:感谢您提供的信息.我也在做自己的评价.有一点我还在想,iBATIS是否可以帮助您保存/更新复杂的对象图?似乎NHibernate很好,因为我可以传递一个根对象,它可以找出需要在数据库中更新的详细信息.
我刚才做了一些研究.
我的一个具体问题可能会给你一些额外的信息:你是否会将 NHibernate用于带有遗留数据库的项目,这部分是你无法控制的?
我可以回答你的一些兴趣点:
如果您同时控制数据模型和应用程序,哪个更好?
我可以反过来回答:如果你无法控制数据模型并因此面对一些遗留数据库,那么iBatis是更好的选择.
iBATIS反复被称为更容易学习 - 这是否会产生长期维护后果(即易于启动,难以维护)?
这取决于你想用它做什么.如果您有域驱动的开发方法,那么iBatis可能会随着时间的推移而变得痛苦.如果您只是进行简单的数据操作并且没有完整的域模型,那么nHibernate可能会成为一种过度杀伤力.
是否可以轻松切换底层数据库供应商?
两者都有机制来阻止你与特定的数据库供应商,但我承认没有在这方面做过激烈的研究.
您的开发人员需要多么熟练的SQL?
当您使用iBatis时,您需要比NHibernate更多的SQL技能.使用iBatis总是需要编写一些SQL代码.NHibernate不要求你编写SQL语句 - 它甚至可以为你做DDL.强大的功能将要求您使用旧的好SQL,这将是不可避免的.
其他一些观点:
我个人觉得iBatis更轻盈.你可以很快完成任务.NHibernate功能更强大,但功能更多,你可以用错误的方式使用它.
可以结合使用NHibernate和iBatis!您可以将NHibernate用于业务逻辑.出于报告目的,您只需从表中读取数据,即可回退到iBatis.
如果您的应用程序具有更长的生命周期和许多业务逻辑,请考虑NHibernate.它有很多功能可以帮助您处理业务对象.
NHibernate周围的社区非常活跃,并提供了有用的工具.