与ORM(NHibernate或Spring.Net)相比,我对数据集有点困惑.根据我的理解,ORM位于应用程序层和数据库层之间.它将为应用程序层生成SQL命令.这与数据集的作用相同吗?数据集和ORM有什么区别?这两种方法有哪些优缺点?希望这里的专家可以解释一下.
谢谢,Fakhrul
它们之间存在着巨大的差异,首先是它们所代表的编程模型:
该数据集是基于表型号
一个ORM(没有指定框架的一个特定产物)是基于并趋于领域模型.
还有另一种可用于数据场景的工具,这种工具是数据映射器(例如iBatis.NET)
正如其他人在我面前回答的那样,我认为重要的是要看看微软对Dataset的看法以及维基百科对ORM的更好说明,但我认为(这对我来说是开始的)更多的是要了解它们之间在模型方面的差异.理解这不仅可以澄清背后的选择,而且更容易理解工具本身.
几乎没有解释,可以说:
是一种模型,它倾向于尽可能接近地表示存储器结构中的表格数据(甚至根据需要).因此,很容易找到实现概念的实现,如表,列,关系实际上模型在表结构上是集中的,因此面向对象不是基于数据本身.这种模式可能有其自身的优势,但在某些情况下可能很难管理并且很难应用所包含数据的概念.正如之前的答案所说,像Dataset这样的实现,让或更好,迫使您准备(即使使用工具)所需的SQL指令来对数据执行操作.
是一个模型(正如mendelt在我之前所说的那样),其中对象直接映射到数据库对象,主要是表和视图(即使它甚至可以映射函数和过程).这通常以两种方式完成,其中一个映射文件描述了映射,或者(在.NET或Java的情况下)代码属性.该模型基于对象它代表了数据,因此可以在正常程序中对它们进行面向对象,在某些情况下更明显更加注意和谨慎,但一般来说,当你对ORM有信心时,它可能是一个非常强大的工具!如果ORM管理和设计得不好,或者更好理解weel,即使ORM也可能很难管理,所以理解技术很重要,但我可以根据自己的经验说ORM是一个非常强大的工具.在ORM中,该工具主要负责生成操作在代码中完成所需的SQL指令,在更多情况下,ORM具有中间语言(如HQL)来对对象执行操作.
映射器是一种不像ORM那样的工具,但是将手写的SQL指令映射到对象模型.当需要手工编写SQL指令时,这种工具可能是更好的解决方案,但是它想要设计一个应用程序对象模型来表示数据.在这个"模型"中,对象被映射到指令并在映射文件中描述(通常是iBatis.Net或iBATIS(java)的Xml文件).使用映射器可以在SQL指令中定义粒度规则.在这种情况下,可以很容易地找到一些ORM概念,例如会话管理.
ORM和Mappers允许应用一些非常有趣的设计模式,这些模式可能不太容易以相同的方式应用于表模型,在本例中也适用于数据集.
首先请原谅我这个冗长的答案以及我糟糕的英语,但对我来说,这样的答案让我过去很好地理解这些模型之间的区别,然后是实现之间的区别.