`

对ORM的讨论,兼回复几位朋友

阅读更多

 

        我觉得ITEye的回复管理不好用,或者是我用不好这个功能,所以如果回复内容较多的时候,还是单独写一篇吧。

 

       首先要说的是 jinnianshilongnian你老兄太客气了,你觉得我的说法不对就直说,归根到底,我们只能根据已有的经验,说一说自己的看法,对不对,都需要多听取别人的看法,来完善自己的认识,所以说欢迎大家的指教,这是帮助我成长,改正我错误的观念。

     一般我认为,因为系统复杂,所以要“挫其锐,解其纷”进行复杂度分解,分解之后的每一个部分,都不会还是盘根错节,那么复杂了。当然,这只是我遇到的情况。

     我赞成你的“对业务对象建模”这一说法,根据业务的需求和逻辑,分析业务对象和业务对象的各种行为、交互,是系统需求分析和设计阶段最重要的事情。我的说法,这个时候不要把数据库和ORM这东西引入进来;甚至说,连想这方面的事情都不去想。

 

    你对框架和工具的理解我完全赞成。在进行产品开发时,有时候会选择一些框架(可能是选择外部开源的框架例如Spring等等,还有可能在开发组内部一些人开发自用的框架-----几年前我就是主导框架部分开发的,所以对框架和工具之间的区别比较清楚,呵呵,见笑);有可能会选择一些工具,例如Google的Guava、JDK的并发包、Apache的Common等等。

  

   我自己从事框架的设计开发以及产品设计时,有一个感触,所以催生了更愿意把ORM当成“工具”而不是“框架”,就是因为框架和工具的这个区别,选好框架后,自己做具体实现,挂到框架中,你要跟着框架的思路来走;工具是随你自己需要提供低一层的功能,思路是由自己主导的。框架从快速开发的角度,非常有利于快速开发(针对一些时间紧的项目是这样最好),但是对需要长期不断完善、改进、精雕细琢的产品来讲,第一个版本的开发,只是万里长征的第一步,所以这时候开发的速度并不是最重要的。

 

   有点跑题了,说回ORM,我的业务层的业务对象之间的逻辑关系都已经设计和实现好了,只是对象->数据库和从数据库里取出来制定的业务对象还没有实现,这时候,我需要一个工具,能够按要求把这些功能给实现了,如此而已。所以,从这个角度我说ORM最好只是一个工具。就像上篇文章里引用的文字的说法。

 

       说到你提出的ORM干扰设计这个说法,其实我上篇文章表达的不好,并不是说ORM这东西本身怎么不好,干扰什么设计,而是很多人,只是为了自己省一些代码工作量,为了有一些“免费的午餐”,对ORM这东西的滥用,对设计造成了干扰。

 

       我觉得对产品设计来讲,先设计数据库,然后从数据库表产生代码就是一种不好的设计和开发实践,造成了OOD的过程从设计数据库表结构开始;先设计对象,再通过注解产生数据库表结构呢,的确要好很多,看上去OO了,但实际上,大多数时候不能很好的利用数据库的特性,因为我经历过很多项目和产品,数据库的设计,客户要求一定要和他们的DBA协商确定的,根据自身的业务对稳定性、性能和维护方便的要求来设计的,不可能由产品开发设计人员完全确定。

 

    你说的很对,要根据情境选择合适的工具。一般来讲,选择之前,先应该摒弃“省点代码,省点时间”和“找点免费的午餐”这些想法,再来选择或设计自己的技术路线和工具、框架。

 

 

dwangel 的回复

 

      楼主做的系统不够多,涉及的数据类型没有达到一定的数量级。

 

 

的确,我做的系统不够多,但是我做的系统也是在客户那里7*24*365运转,每天承载全国的业务;涉及系统数据类型没有达到一定的数量级,这是工作特点决定的,所以我的确有井底之蛙的嫌疑,我也愿意大家把自己的经验讲给我,让我增长见识。

 

还是那句话,系统在设计时,应该先进行子系统分解,然后是模块分解,如果分解了很久,每个模块还是异常复杂,数据类型、业务流程和业务对象之间的关系还是那么复杂,那么我觉得业务的分解过程做得不是很好。架构设计的一个重要任务,就是把系统的复杂度分解到各个子系统和模块,每个子系统和模块都承担一部分复杂度,再协作完成系统的工作目标。你分解了半天,每个子系统和模块还异常复杂(甚至涉及的数据类型还都是成千上万的,是不是有问题

 

      而且不是大团队作业。

 

    团队作业又怎么样呢?大的团队,上百人一起工作,其实也无非是分割成一个个小团队来做,甚至小团队内部再划分成几个组来进行工作。团队建建立起良好的工作(设计和编码等)规范和制度来降低沟通的成本,或者建立星形的沟通结果,避免网状沟通。这一点是人的问题和管理的问题,和任何技术选型都是无关的。

 

  当然,框架本身的确包含了一定的设计规范在其中,这是无可非议的。

 

   你说的业务对象建模没有问题,只是此“业务对象”是和数据库无关的,跟ORM更无关。在使用业务对象搭建系统完成之后再来使用ORM其实也是很好的。

 

回复Allen:

 

    我没有这个意思,我很讨厌把业务逻辑放在数据库里。别人怎么设计我不管,我设计系统时,业务逻辑一定要放在程序代码中。这篇东西本身就是为了表达自己对ORM的看法,以及对“ORM已死”这个说法的一些思考。

 

 

 

 

 

 

1
6
分享到:
评论
17 楼 mike.liu 2013-05-30  
To  truekbcl:

这个说法,是结构化设计的总结,现在有新的说法了。
--------
前面的我都理解,只是后面这句,不知道现在新的说法是什么,诚心讨教。
16 楼 truekbcl 2013-05-30  
mike.liu 写道
windshome 写道
欢迎mike.liu再次光顾我的文章,你的基础知识和功底比我丰富,向你学习。

我的意见是,你要表达数据结构,根本无需ORM。ORM的增删改查本身只是一种工具提供给上层的操作能力。具体的处理还得看业务。

很多的时候,ORM上是增删改查,而业务里边是另外的词汇,甚至,有很多业务要求,一个业务写多条数据,删除一些数据、修改一些数据,在一个事务里完成。这个时候,ORM里不掺和业务,只是提供一个操作数据的接口,上层业务流程组装这些东西。


关于业务和ORM的关系,我是这样理解的,欢迎批评指正:

程序=数据结构+算法

数据结构,在C里面就是struct,指针,数组等;在Java里面就是Bean,Object;在数据库里面,就是表结构,外键,关联表等。

业务其实是程序在另外一个层面的表述而已,所以每个业务必然包含数据和代码。

前辈大牛说,尽量把业务往数据里面塞,并提出以数据为中心进行程序设计,是因为这样设计出来的程序更健壮,更容易修改,更容易理解,更容易检查。

在Java企业级应用里面,最常用的数据就是Bean,Bean加上一些关系型的约束,就成为ORM,所以在企业级应用里面,把ORM与数据结构划等号,个人认为基本是没有什么问题的。如果这种理解没有错,那么就不能说ORM在业务分析和设计里面不重要。

当然在其它领域,比如桌面开发,可能对象直接在内存里面就可以了,大不了写到文件里面,这个时候是用不到什么ORM的。但是里面一样离不开数据。

------------
程序=数据结构+算法
2进制代码->汇编->结构化->多种范式,每个阶段有不同的总结。
这个说法,是结构化设计的总结,现在有新的说法了。
15 楼 truekbcl 2013-05-30  
windshome 写道
回复mike.liu:

关于   程序=数据结构+算法 这一说法,我专门写了一篇,也请光顾指正:
http://windshome.iteye.com/blog/1872031


数据结构是一个存在很久的东西了,ORM可能从某种程度上表现了数据结构,但是要想表达数据结构,完全可以和ORM无关。

其实我和老兄的观点的区别,在于我更倾向于从外部(业务、客户)的角度来去看待产品、软件和设计、程序;而你更倾向从内部(数据、算法、技术)。

《人月神话》作者Brooks说的好,软件开发中,最最困难的,本质的困难,就是需求规格,其实也就是业务的分析,我总是乐意从外部来看程序开发,也是基于这个理由,分析业务、描述业务如果清楚了,那么你的程序基本上就成功了一大半。

当然我并不是排斥工具,例如Ioc、ORM;只是想说,这些东西在产品开发中的位置和重要程度是不同的,作用也是不同的。

《人月神话》作者Brooks说的好,软件开发中,最最困难的,本质的困难,就是需求规格,其实也就是业务的分析,我总是乐意从外部来看程序开发,也是基于这个理由,分析业务、描述业务如果清楚了,那么你的程序基本上就成功了一大半。
----------------
这个只能是正确的废话。原因在于:任何领域的软件,你与使用者的理解可能都不相同,而且都可能没理解完整,而且还有N多的细节,需要解决的问题就是指数增长。这注定了“业务清楚”就是镜花水月。所以才会丢弃瀑布而采取敏捷。这个过程,不可能避免的。
另一方面,计算机语言也是一个问题。就oo的表达能力,实在是有点弱。所以造就了hibernate很难用。也造就了业务复杂了,代码的结构很难用。
14 楼 windshome 2013-05-30  
你说的这个我认可,我也的确打算看点RESTful方面资料,充实一下自己。但是我有一个信念,就是现在概念性的东西太多,感觉很繁杂。

总想着通用,结果就是哪里也不通,哪里都很费劲。

所谓CRUD,我认为就是对业务的一种抽象,抽象不是坏事,而是使用这种抽象方法的人,别忘了抽象的概念和具体的内容相结合,无论何时,还是以具体内容为主。


抽象的这个东西没有或者说抽象得不好也没什么大事,但是具体内容没有弄好,系统就失败了。我强调,更多去分析自己的具体业务,这不是简单的CRUD能涵盖的,把CRUD视为数据持久层的一种能力(相当于API)给上层用就可以了。


13 楼 mike.liu 2013-05-30  
另外,有一点感觉和楼主意见相同,就我目前所经历的看,的确是需求分析和设计这一阶段的工作做得很不够。从而导致整个项目的结果不理想。

但是这个仅仅是需求分析和设计的问题,与ORM无关。并且开发软件,始终是绕不过与ORM类似的底层框架、工具和平台的。迟早还是得用它们来表达所有的业务和设计。
12 楼 mike.liu 2013-05-30  
windshome 写道
mike.liu 写道
你的大作拜读了,以下是我的看法,供参考:

软件开发的过程,应该是从抽象到具体,从模糊到清晰的过程。

在前期,理解需求和分析业务阶段,不去考虑语言、框架,是应该的,必须的。我相信这一点和楼主意见一致。

但是无论如何,随着开发的逐步深入,所有需求分析出来的东西,都要具体化,也就是用什么语言、什么框架、什么数据结构、什么算法、什么数据库,甚至到用什么服务器,什么类型的CPU等等。即使你不做这个事情,也必定需要其他人来做这样的事情。即使不用ORM,也要有办法把数据结构持久化。

但是,如果一开始,就用ORM这样一类更严格的东西来描述表达业务需求,可以减少很多歧义,使业务理解达成共识更容易一些。如果客户无法理解ORM,也可以用他们能够理解的方式描述业务,然后总得有人把它翻译为ORM或者别的什么数据结构来表达。因为离开数据结构和算法,要做程序设计,至少以我的经验来看,还没有过。

退一步说,自然语言,每句话,里面也是有名词,有动词,有主语、谓语、宾语。都是可以映射到程序设计中的数据(结构)和算法的。而且也只有做了这种投射和翻译,计算机才有可能理解。凡是不能做这种投射的,计算机就不能理解。

所以ORM也好,数据结构也好,只是一个中间结果,用于帮助下一步以计算机能够理解的方式进行代码设计。

“程序就是用计算机能理解的方式,描述业务。”我理解的可能有点不一样,是这样的:业务是计算机能够理解的模拟现实世界的程序。

比如我提一个需求:设计一个可以像人类一样和我进行直接对话的机器。
你可以根据这个需求分解出很多业务,此时可以不管用什么语言、什么框架。但是到具体实现的时候,必定碰到怎么表达某个概念,数据以什么方式组织,怎么存储等等问题。如果做不到这些,那么就不能是业务。至少不是计算机能够实现的业务。

计算机无法实现的业务很多很多,包括中国特色的各种东西。

凡是计算机无法理解,不能执行的,都不能是业务。


其实我们没有多大的分歧,不同在于我想向设计开发人员强调业务需求,而老兄更在意设计开发过程。这本身就是一个大过程中的两个小过程。

我的文章本意是尽量减少ORM在设计过程的出现,其实目的在于针对目前ORM被滥用这一不好的现状。动辄Hibernate,动辄CRUD,我总觉得不好,当然也只是个人的感觉而已。







探讨使人进步。设计过程中是否尽量少出现ORM暂且不论,单就CRUD,推荐楼主去了解一下RESTful的风格的设计理念。即使不认同,也是他山之石。

程序设计中一个重要的步骤就是分解出业务中的名词性概念和动词性概念,如果在这种分解中,尽量把动词转换为动名词(比如:把“订购”转换为“订购记录”),则动词可以大大简化,简化到极致,就是CRUD。

另外,在需求分析和设计阶段,越早引入类似ORM这样的有严格定义、没有歧义的表达方式(前提是参与分析和设计的人都懂这个东西),就越能提高设计的质量和效率。
11 楼 windshome 2013-05-29  
mike.liu 写道
你的大作拜读了,以下是我的看法,供参考:

软件开发的过程,应该是从抽象到具体,从模糊到清晰的过程。

在前期,理解需求和分析业务阶段,不去考虑语言、框架,是应该的,必须的。我相信这一点和楼主意见一致。

但是无论如何,随着开发的逐步深入,所有需求分析出来的东西,都要具体化,也就是用什么语言、什么框架、什么数据结构、什么算法、什么数据库,甚至到用什么服务器,什么类型的CPU等等。即使你不做这个事情,也必定需要其他人来做这样的事情。即使不用ORM,也要有办法把数据结构持久化。

但是,如果一开始,就用ORM这样一类更严格的东西来描述表达业务需求,可以减少很多歧义,使业务理解达成共识更容易一些。如果客户无法理解ORM,也可以用他们能够理解的方式描述业务,然后总得有人把它翻译为ORM或者别的什么数据结构来表达。因为离开数据结构和算法,要做程序设计,至少以我的经验来看,还没有过。

退一步说,自然语言,每句话,里面也是有名词,有动词,有主语、谓语、宾语。都是可以映射到程序设计中的数据(结构)和算法的。而且也只有做了这种投射和翻译,计算机才有可能理解。凡是不能做这种投射的,计算机就不能理解。

所以ORM也好,数据结构也好,只是一个中间结果,用于帮助下一步以计算机能够理解的方式进行代码设计。

“程序就是用计算机能理解的方式,描述业务。”我理解的可能有点不一样,是这样的:业务是计算机能够理解的模拟现实世界的程序。

比如我提一个需求:设计一个可以像人类一样和我进行直接对话的机器。
你可以根据这个需求分解出很多业务,此时可以不管用什么语言、什么框架。但是到具体实现的时候,必定碰到怎么表达某个概念,数据以什么方式组织,怎么存储等等问题。如果做不到这些,那么就不能是业务。至少不是计算机能够实现的业务。

计算机无法实现的业务很多很多,包括中国特色的各种东西。

凡是计算机无法理解,不能执行的,都不能是业务。


其实我们没有多大的分歧,不同在于我想向设计开发人员强调业务需求,而老兄更在意设计开发过程。这本身就是一个大过程中的两个小过程。

我的文章本意是尽量减少ORM在设计过程的出现,其实目的在于针对目前ORM被滥用这一不好的现状。动辄Hibernate,动辄CRUD,我总觉得不好,当然也只是个人的感觉而已。





10 楼 mike.liu 2013-05-29  
你的大作拜读了,以下是我的看法,供参考:

软件开发的过程,应该是从抽象到具体,从模糊到清晰的过程。

在前期,理解需求和分析业务阶段,不去考虑语言、框架,是应该的,必须的。我相信这一点和楼主意见一致。

但是无论如何,随着开发的逐步深入,所有需求分析出来的东西,都要具体化,也就是用什么语言、什么框架、什么数据结构、什么算法、什么数据库,甚至到用什么服务器,什么类型的CPU等等。即使你不做这个事情,也必定需要其他人来做这样的事情。即使不用ORM,也要有办法把数据结构持久化。

但是,如果一开始,就用ORM这样一类更严格的东西来描述表达业务需求,可以减少很多歧义,使业务理解达成共识更容易一些。如果客户无法理解ORM,也可以用他们能够理解的方式描述业务,然后总得有人把它翻译为ORM或者别的什么数据结构来表达。因为离开数据结构和算法,要做程序设计,至少以我的经验来看,还没有过。

退一步说,自然语言,每句话,里面也是有名词,有动词,有主语、谓语、宾语。都是可以映射到程序设计中的数据(结构)和算法的。而且也只有做了这种投射和翻译,计算机才有可能理解。凡是不能做这种投射的,计算机就不能理解。

所以ORM也好,数据结构也好,只是一个中间结果,用于帮助下一步以计算机能够理解的方式进行代码设计。

“程序就是用计算机能理解的方式,描述业务。”我理解的可能有点不一样,是这样的:业务是计算机能够理解的模拟现实世界的程序。

比如我提一个需求:设计一个可以像人类一样和我进行直接对话的机器。
你可以根据这个需求分解出很多业务,此时可以不管用什么语言、什么框架。但是到具体实现的时候,必定碰到怎么表达某个概念,数据以什么方式组织,怎么存储等等问题。如果做不到这些,那么就不能是业务。至少不是计算机能够实现的业务。

计算机无法实现的业务很多很多,包括中国特色的各种东西。

凡是计算机无法理解,不能执行的,都不能是业务。
9 楼 windshome 2013-05-29  
回复mike.liu:

关于   程序=数据结构+算法 这一说法,我专门写了一篇,也请光顾指正:
http://windshome.iteye.com/blog/1872031


数据结构是一个存在很久的东西了,ORM可能从某种程度上表现了数据结构,但是要想表达数据结构,完全可以和ORM无关。

其实我和老兄的观点的区别,在于我更倾向于从外部(业务、客户)的角度来去看待产品、软件和设计、程序;而你更倾向从内部(数据、算法、技术)。

《人月神话》作者Brooks说的好,软件开发中,最最困难的,本质的困难,就是需求规格,其实也就是业务的分析,我总是乐意从外部来看程序开发,也是基于这个理由,分析业务、描述业务如果清楚了,那么你的程序基本上就成功了一大半。

当然我并不是排斥工具,例如Ioc、ORM;只是想说,这些东西在产品开发中的位置和重要程度是不同的,作用也是不同的。
8 楼 mike.liu 2013-05-29  
windshome 写道
欢迎mike.liu再次光顾我的文章,你的基础知识和功底比我丰富,向你学习。

我的意见是,你要表达数据结构,根本无需ORM。ORM的增删改查本身只是一种工具提供给上层的操作能力。具体的处理还得看业务。

很多的时候,ORM上是增删改查,而业务里边是另外的词汇,甚至,有很多业务要求,一个业务写多条数据,删除一些数据、修改一些数据,在一个事务里完成。这个时候,ORM里不掺和业务,只是提供一个操作数据的接口,上层业务流程组装这些东西。


关于业务和ORM的关系,我是这样理解的,欢迎批评指正:

程序=数据结构+算法

数据结构,在C里面就是struct,指针,数组等;在Java里面就是Bean,Object;在数据库里面,就是表结构,外键,关联表等。

业务其实是程序在另外一个层面的表述而已,所以每个业务必然包含数据和代码。

前辈大牛说,尽量把业务往数据里面塞,并提出以数据为中心进行程序设计,是因为这样设计出来的程序更健壮,更容易修改,更容易理解,更容易检查。

在Java企业级应用里面,最常用的数据就是Bean,Bean加上一些关系型的约束,就成为ORM,所以在企业级应用里面,把ORM与数据结构划等号,个人认为基本是没有什么问题的。如果这种理解没有错,那么就不能说ORM在业务分析和设计里面不重要。

当然在其它领域,比如桌面开发,可能对象直接在内存里面就可以了,大不了写到文件里面,这个时候是用不到什么ORM的。但是里面一样离不开数据。
7 楼 windshome 2013-05-29  
jinnianshilongnian,就是就是,我想,你的理解,是正确使用ORM。可惜目前很多人都不是这样,呵呵!我之所以说把它看成一个小工具或脚手架,也许也是一种“矫枉过正”的说法吧。
6 楼 雪飘寒 2013-05-29  
个人觉得orm框架只是对于技术层面来讲的,是技术框架

是框架还是工具,个人理解而已。

我的数据存到数据库中,或者硬盘中,或者文件里,都可以,那难道就把数据库和一个硬盘来等价吗,数据库的功能还是很多的。
5 楼 jinnianshilongnian 2013-05-29  
windshome 写道
欢迎mike.liu再次光顾我的文章,你的基础知识和功底比我丰富,向你学习。

我的意见是,你要表达数据结构,根本无需ORM。ORM的增删改查本身只是一种工具提供给上层的操作能力。具体的处理还得看业务。

很多的时候,ORM上是增删改查,而业务里边是另外的词汇,甚至,有很多业务要求,一个业务写多条数据,删除一些数据、修改一些数据,在一个事务里完成。这个时候,ORM里不掺和业务,只是提供一个操作数据的接口,上层业务流程组装这些东西。


其实探讨了半天,说白了ORM跟什么业务本来就没有啥关系。
4 楼 jinnianshilongnian 2013-05-29  
mike.liu 写道
mike.liu 写道
“数据压倒一切。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。”--《Unix程序设计艺术》

人处理数据的能力比处理算法的能力强。

在业务系统中,ORM就对应数据结构。尽量把业务逻辑塞到ORM中去,所有的算法基本就变成ORM的增删改查操作了。


另外,几乎没有ORM不能表达的数据结构吧?ORM无论是工具也好,框架也好,怎么把它用好是最重要的。

ORM是一个映射器,而不是数据结构; O和R是数据结构。所以O和R才是核心,M用来协调它们之间的不匹配的。
3 楼 windshome 2013-05-29  
欢迎mike.liu再次光顾我的文章,你的基础知识和功底比我丰富,向你学习。

我的意见是,你要表达数据结构,根本无需ORM。ORM的增删改查本身只是一种工具提供给上层的操作能力。具体的处理还得看业务。

很多的时候,ORM上是增删改查,而业务里边是另外的词汇,甚至,有很多业务要求,一个业务写多条数据,删除一些数据、修改一些数据,在一个事务里完成。这个时候,ORM里不掺和业务,只是提供一个操作数据的接口,上层业务流程组装这些东西。
2 楼 mike.liu 2013-05-29  
mike.liu 写道
“数据压倒一切。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。”--《Unix程序设计艺术》

人处理数据的能力比处理算法的能力强。

在业务系统中,ORM就对应数据结构。尽量把业务逻辑塞到ORM中去,所有的算法基本就变成ORM的增删改查操作了。


另外,几乎没有ORM不能表达的数据结构吧?ORM无论是工具也好,框架也好,怎么把它用好是最重要的。
1 楼 mike.liu 2013-05-29  
“数据压倒一切。如果已经选择了正确的数据结构并且把一切都组织得井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。”--《Unix程序设计艺术》

人处理数据的能力比处理算法的能力强。

在业务系统中,ORM就对应数据结构。尽量把业务逻辑塞到ORM中去,所有的算法基本就变成ORM的增删改查操作了。

相关推荐

    ORM思想的深入学习ORM.zip

    这样的实践有助于理解ORM的工作原理,同时也能提升对数据库操作和设计模式的理解。 5. **测试代码**:在学习ORM的过程中,测试代码至关重要。通过编写测试用例,可以验证ORM框架的正确性,包括对象的持久化、查询、...

    php中的orm

    这样,开发者可以对这些对象进行操作,如创建、读取、更新和删除(CRUD),而ORM会自动处理与数据库的交互。 Doctrine是PHP中的一款强大的ORM工具,提供了完整的数据库管理解决方案,包括查询构建器和原生的SQL...

    ORM对象关系映射

    ORM 技术包括以下四部分:一个对持久类对象进行 CRUD 操作的 API;一个语言或 API 用来规定与类和类属性相关的查询;一个规定 mapping metadata 的工具;一种技术可以让 ORM 的实现同事务对象一起进行 dirty ...

    几种常用的ORM工具测试比较

    本文将对几种常见的ORM工具进行测试比较,包括Ado.net、Entity Framework (EF)、Dapper、Subsonic以及LinqToSql。 1. Ado.net:Microsoft开发的一种数据库访问技术,它是.NET Framework的一部分。Ado.net提供了对...

    K-ORM 自定义ORM工具

    《K-ORM自定义ORM工具详解》 ORM(Object-Relational Mapping)是现代软件开发中的一种重要技术,它将数据库中的数据与程序中的对象进行映射,使得开发者可以使用面向对象的方式操作数据库,而无需关注底层SQL语句...

    Moon.Orm下载

    Moon.Orm是一个专门为.NET开发者设计的轻量级ORM(对象关系映射)框架,它具有强大的功能和良好的可扩展性,能够支持多种不同的数据库系统,包括但不限于MySQL、SQL Server、Oracle、SQLite等。ORM框架的主要目标是...

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    cpp-SQLiteORM用于现代C的SQLiteORM库只有header

    标题中的"cpp-SQLiteORM用于现代C++的SQLite ORM库只有header"表明这是一个关于C++的SQLite对象关系映射(ORM)库,且该库仅包含头文件,这意味着开发者无需链接任何库文件,只需包含相应的头文件即可使用。ORM是一...

    sqlite3的ORM框架

    SQLite3的ORM(Object-Relational Mapping)框架是一种在C++编程中将数据库关系模型与对象模型进行对应的技术。ORM框架使得开发者可以使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了开发效率和代码...

    eform集成开发手册

    这些表结构是eform集成开发的基础,开发者必须对它们有深入的理解和掌握。 在使用eform for .net 和eform for java 部分,手册详细介绍了如何使用eform在不同的开发环境中,包括使用sql server 2000 和oracle9i 等...

    ORM映射与WEB的应用

    例如,在Spring Data JPA中,我们可以通过定义Repository接口并结合Hibernate ORM,轻松实现对数据库的操作。而在Python的世界里,SQLAlchemy是常用的ORM工具,它允许开发者以Pythonic的方式定义模型,并进行数据库...

    orm的详细解释概念

    ORM的实现通常包括以下几个组件: 1. **持久化类对象操作API**:这是一个用于创建、读取、更新和删除(CRUD)数据库记录的接口或库。例如,Java中的Hibernate提供了SessionFactory和Session接口来执行这些操作。 2...

    ORM客户关系体系统

    在本例中,我们讨论的是一个基于VS2005开发的三层架构ORM客户关系管理系统,它提供了学习源码,非常适合于开发者进行学习和实践。 首先,三层架构是软件设计中的一种常见模式,主要分为表现层(UI)、业务逻辑层...

    Grove ORM Development Toolkit

    10. **文档与社区支持**:熟悉Grove ORM的官方文档,学习如何获取帮助,参与社区讨论,获取最新的开发资讯和最佳实践。 通过深入学习和实践这些知识点,开发者将能够充分利用Grove ORM Development Toolkit,提高...

    SqliteORM,一个很好的Sqlite ORM框架

    Sqlite ORM 是一个简单的C#类,对Sqlite的操作进行了封装,主要功能包括:表定义、生成,访问,更新等,其中,支持,多表的连接操作,语法类似Linq语法,使用非常方便,附加了使用说明文档。 例如,添加记录操作为...

    .NET ORM框架

    ORM框架允许程序员使用面向对象的方式来处理数据库,将数据库中的数据与程序中的对象进行关联,从而避免了对SQL的直接操作,提高了开发效率和代码的可维护性。 在C#.NET环境下,ORM框架扮演着桥梁的角色,它使得C#...

    Go-GoGolang的ORM库

    标题"Go-GoGolang的ORM库"暗示我们将讨论的是Go语言中的一些ORM库。Go的ORM库为开发者提供了与关系数据库进行交互的抽象层,使得在Go中处理数据库变得更加简单。这些库通常包括模型定义、查询构建器、事务处理等功能...

    hsweb-easy-orm, 简单的orm工具,为动态表单而生.zip

    通常,源码会分为几个主要部分:核心 ORM 引擎、数据库驱动适配器、示例代码以及相关测试用例。通过阅读源码,开发者可以深入了解 HSWeb-Easy-ORM 的实现细节,包括实体类的注解、查询构造器的使用、事务管理等。 ...

    eform自定义表单

    **eform自定义表单**是北京方程软件推出的一款开源工作流解决方案,它专为程序员在工程开发中简化表单设计流程而设计。这款工具的出现,极大地提升了开发效率,减少了开发表单时的繁琐步骤,使得程序员可以更加专注...

    ORM Framework

    它不是完整的ORM,而是作为对ADO.NET的扩展,提供了一种更方便的方式来映射查询结果到对象。 7. **easy4net-master**:这可能是另一个.NET平台上的ORM框架,类似于Easy4net项目,旨在简化数据库操作。 学习ORM框架...

Global site tag (gtag.js) - Google Analytics