NHibernate和iBATIS.NET之间有什么区别?
我正在寻找一些比较NHibernate和iBATIS.NET的最新信息。我在谷歌搜索时发现了一些信息,但有一部分信息要么适用于这些产品的Java版本,要么已经过时 我感兴趣的一些具体事情:NHibernate和iBATIS.NET之间有什么区别?,nhibernate,orm,ibatis.net,data-mapping,Nhibernate,Orm,Ibatis.net,Data Mapping,我正在寻找一些比较NHibernate和iBATIS.NET的最新信息。我在谷歌搜索时发现了一些信息,但有一部分信息要么适用于这些产品的Java版本,要么已经过时 我感兴趣的一些具体事情: 如果同时控制数据模型和应用程序,哪个更好 iBATIS被反复称为“易学”——这是否会带来长期维护后果(即易于启动、难以维护) 这两者是否都能使切换底层数据库供应商变得容易 您的开发人员需要具备多大的SQL技能 一方拥有另一方缺乏的任何主要特征 这两种产品是否更适合特定类型的应用 对于观察到的优点和缺点的真
- 如果同时控制数据模型和应用程序,哪个更好
- iBATIS被反复称为“易学”——这是否会带来长期维护后果(即易于启动、难以维护)
- 这两者是否都能使切换底层数据库供应商变得容易
- 您的开发人员需要具备多大的SQL技能
- 一方拥有另一方缺乏的任何主要特征
- 这两种产品是否更适合特定类型的应用
编辑:谢谢你的信息。我也在做自己的评估。有一件事我仍然很好奇,iBATIS是否能帮助您保存/更新复杂的对象图?NHibernate似乎很不错,因为我可以向它传递一个根对象,它可以计算出需要在数据库中更新的内容的细节。从某种意义上说,它是在比较苹果和桔子 如果同时控制数据模型和应用程序,哪个更好 它们都能很好地处理规范化数据库,因此,如果可以调整数据库的形状,它们或多或少是相等的。iBatis更擅长映射到遗留数据库,因为它实际上根本不关心数据库结构。它只关心结果集的形状 .iBATIS被反复称为更容易学习-这是否会导致长期维护后果(即易于启动,难以维护) 它要简单得多,但这是因为它的特性集要小得多。我不认为它有任何定时炸弹长期维护问题 这两者是否都能使切换底层数据库供应商变得容易 对 您的开发人员需要具备多大的SQL技能 两者都需要良好的SQL知识。使用iBatis,您仍然需要编写sql查询/proc。使用NHibernate,您必须知道如何编写NHibernate查询以获得有效的SQL。两者都不是SQL知识的替代品 一方拥有另一方缺乏的任何主要特征
iBatis是一个数据映射程序(iBatis站点上使用的术语)。NHibernate是一个成熟的对象关系映射器。如果您主要希望消除将对象映射到结果集的单调性,那么iBatis是一种很好的方法。然而,它并没有完全解决对象/关系不匹配的问题。NHibernate还有很多特性,比如脏跟踪、基于身份/身份映射的缓存、灵活的查询、动态sql、批处理等。。。NHibernate更具动态性,因为它可以在DB的一次行程中完成许多事情,而iBatis可能需要多次行程 我刚才做了一些研究 我提出的一个具体问题可能会为您提供一些补充信息: 我可以回答你的一些兴趣点:
- 如果同时控制数据模型和应用程序,哪个更好
- iBATIS被反复称为“易学”——这是否会带来长期维护后果(即易于启动、难以维护)
- 这两者是否都能使切换底层数据库供应商变得容易
- 您的开发人员需要具备多大的SQL技能
- 我个人认为iBatis的重量要轻得多。你可以很快把事情做完。NHibernate更强大,但有更多的功能,您可能会以错误的方式使用这些功能
- 可以结合使用NHibernate和iBatis!您可以将NHibernate用于您的业务逻辑。出于报告目的,如果您只是从表中读取数据,请回退到iBatis
- NHibernate周围的社区非常活跃,并提供了有用的工具