3,ORM组件XCode(简介)

简介: XCode是一个轻量级的ORM组件(对象与关系数据库映射),提供以面向对象的方式操作数据库的功能,能够解决90%以上的数据库操作场景。     做为X系列组件最重要的一员,XCode秉承了简单实用的特点,力求以最简单的做法,解决最普遍的问题。

    XCode是一个轻量级的ORM组件(对象与关系数据库映射),提供以面向对象的方式操作数据库的功能,能够解决90%以上的数据库操作场景。

    做为X系列组件最重要的一员,XCode秉承了简单实用的特点,力求以最简单的做法,解决最普遍的问题。

    XCode最大的“缺点”就是“不支持”多表查询!为何不支持要加双引号?那是因为XCode实际上支持多表查询,只是用起来非常复杂,也不容易讲清楚,会严重影响基本功能的学习理解,所以逢人问到,我都回答不支持!至于缺点二字加双引号,是因为XCode有一整套替代方案,在绝大多数情况上,更优于多表查询。

 

    说XCode,就不得不提开发模式。每一个ORM组件,都是在某一种开发模式下,才能表现得最出色,XCode也不例外,我们称之为XCode开发模式。当然,每个人有自己的想法,有自己的开发习惯,可以尝试根据自己的习惯去使用XCode,或者稍微修改自己的习惯,也许能有更精彩的用法。

 

    XCode专注于对象与关系数据库映射,内部明显分为上下两层:

    1,下层以DAL作为入口,IDatabase作为接口,各种数据库实现一个类,实现该接口以支持多数据库。DAL的两大代表是Select(查询SQL,返回DataSet)和Execute(执行SQL,返回影响行数),并且以SQL为key,有一级缓存的支持。DAL还支持DbCommand的查询和操作,不过就不受一级缓存的支持了。

wps_clip_image-13847

(DAL层结构图)

    2,上层以Entity作为泛型基类,所有实体类继承于它。经典的LoadData能够把DataSet或者DataTable转化为实体对象集合,每行记录实例化一个实体对象,每个表字段的值赋值给实体对象的属性。所以,完全可以以别的方式得到DataSet,然后利用LoadData将其转为实体对象集合,而不一定需要DAL。可以得知,XCode支持视图,复杂查询或者多表查询可以通过视图变相解决,不过一般不推荐这么做。增删改查等操作,XCode实际上通过实体类的元数据等信息,动态拼接SQL,然后调用DAL层实现。

wps_clip_image-11145

(加载记录集和数据表)

wps_clip_image-5931

(执行插入操作,先拼接SQL,再执行)

    此两层结构说明,实际上就是XCode核心原理,任何人都可以根据这个原理来实现自己的ORM。至于结果组件的优劣程度,就看各自的功力以及对细节的考虑了。

 

    XCode的理念是以面向对象为本,所以于本对象有关的东西都写在本对象内。所以XCode是一个充血模型

 

    所有查询操作(例如Find、FindAll、FindCount)都是静态方法,因为它与具体对象无关;而对象操作(例如Insert、Update、Save、Delete)都是成员方法,因为它与具体对象密切相关,代表着对具体对象的操作。这是XCode模型的基本思想,同样,为实体类编写业务代码的时候,也应该严格遵循该原则,哪些应该是静态的,哪些应该是成员的,要严格分开。

    当然,XCode实体类也支持贫血模型的一些操作方式,只不过操作类还是自身而已,比如Insert、Update、Save、Delete也有静态方法,而参数就是实体类对象。

XCode的模型,还有一个很重要的意义,就是完全满足数据源组件ObjectDataSource的要求,使得XCode实体类可以直接充当数据提供者。

wps_clip_image-2511

wps_clip_image-1271

(成对出现的FindAll/FindCount,参数完全一摸一样,正是ObjectDataSource的要求)

    本文仅是XCode的一个简介,说明XCode的结构和开发模式,更详细的说明请关注后文。

 

大石头

新生命开发团队

2010-08-20 00:36

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
Xcode12在storyboard添加组件和事件,添加新页面及跳转
Xcode12界面有所改变,导致一些按钮位置变动。比如为storyboard添加组件的按钮移至如下位置:
2053 0
|
SQL 数据库 iOS开发
|
缓存 算法 数据库
数据映射组件NewLife.XCode优势
数据映射组件XCode优势 XCode是一个超越了ORM范围的映射组件,除了对象到关系数据库的映射外,还有到网络和其它二进制形式等的映射,所以称之为数据映射组件。 相对于国内外其它ORM,XCode具有以下优势: 1,采用最好的分页算法,高效处理海量数据。
1231 0
|
缓存 关系型数据库 数据库
新生命开发团队Orm框架XCode v3.5.2009.0714源码发布(圣诞随心大礼包)
忙忙碌碌有一年!做了很多东西,到头来,似乎又什么都没有做。人继续变老,程序继续改进。     这段时间从我们各个系统抽取了基础的常用的部分,整理后形成了一个XCode示例项目,包含三部分:DLL引用程序集、Web网站、YWS实体类库。
755 0
|
数据库 iOS开发
2,ORM组件XCode(速览)
啥也不说,上图:     这是最基本的增删改查代码!     符合X系列组件的一贯作风,不求万能,只求简单实用!     不支持多表查询,所以不是万能的,仅仅支持单表,所以是简单的,增删改查都得到了直接支持,完全能解决80%以上的场景,所以是实用的。
784 0
|
Oracle 关系型数据库 数据库
5,ORM组件XCode(动手)
本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感受到它的贵族血统!     先抛出三篇来吸引人,再出《动手》,其实就是吊人胃口。
901 0
|
SQL 测试技术 iOS开发
6,ORM组件XCode(撬动千万级数据)
有了前面的《动手》,基本上可以进行开发了。本篇我们来试试XCode的基本功功力如何,测试在单表一千万业务数据的环境下查询的速度,添删改等没什么可测试的。其实应该说是XCode开发模式的功力,XCode组件仅仅是处理分页而已,而XCode开发模式为高性能开发提供了更多的建议。
1005 0
|
6月前
|
jenkins Unix 持续交付
个人记录jenkins编译ios过程 xcode是9.4.1
个人记录jenkins编译ios过程 xcode是9.4.1
85 2