电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

ORMapping

来源:金蝶云社区作者:金蝶2024-09-223

ORMapping

1. ORMapping 概念

ORM(对象关系映射,英语:Object Relational Mapping,简称ORM,或O/RM或O/R mapping)的实质就是将关系数据库中的业务数据用对象的形式表示出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。

在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。从面向对象来说,数据库不应该和业务逻辑绑定到一起,ORM则起到这样的分离作用,使数据库层透明,开发人员真正的面向对象。

2. 为什么要使用ORM

    1.提高学习开发效率,降低开发成本

    使用ORM可以大大降低学习和开发成本。在实际的开发中,真正对客户有价值的是其独特的业务功能,而现在的现状是我们花费了大量的时间在编写数据访问,CRUD方法,包括后期的Bug查找,维护等也会花费相当多的时间在数据处理上,ORM框架已经把数据库转变成了大家熟悉的对象,开发人员将只需要了解面向对象开发就可以实现数据库应用程序的开发。

    2.简化代码,减少BUG数量

    通过建立ORM系统,能够大量减少程序开发代码,实现ORM后,开发数据层就比较简单,大大减少了出错机会。

    3.提高性能

同时通过Cache的实现,能够对性能进行调优,实现了ORM区隔了实际数据存储和业务层之间的关系,能够对每一层进行单独跟踪,增加了性能优化的可能。

    4.隔离数据源,可以很方便的转换数据库

利用ORM可以将业务层与数据存储隔开,开发人员不需要关系实际存储的方式,如果需要把SQL Server数据库换成ORACLE数据库,只需要切换数据中心就可,不需要修改程序。

3. ORMapping职责

    1. 将对象所持有的数据持久化到数据源中

    2. 按需从数据源中获取数据拼装成对象

    3. 屏蔽直接对数据源的操作,消除异构数据源对程序的影响

    4. 进行校验、计算、数据多语言等处理

4. ORMapping主要接口方法

    接口类:com.kingdee.bos.dao.ormapping.IORMappingDAO

    实现类:com.kingdee.bos.dao.ormapping.ORMappingDAO

    主要方法:

    1. 获取接口对象getInstance

    2. 获取业务对象getValue

    3. 获取业务对象集合getCollection

    4. 获取主键集合getPKList

    5. 获取满足条件的数据数目getCount

    6. 更新业务对象update

    7. 指定字段更新 updatePartial

    8. 批量更新 updateBatch

    9.  删除 delete

    10. 新增 addnew

    11. 验证是否满足条件(验权)accept

    12. 验证数据是否存在exists

5. ORMapping结构组成

ORMapping通过结合元数据,将业务层的数据转换成KSQL,再持久化到数据源中,将业务层与数据存储隔开。

ORMapping的基本处理行为-持久数据

持久数据逻辑关键类方法

ORMapping的基本处理行为-获取数据

获取数据逻辑关键类方法

com.kingdee.bos.dao.ormapping.innerGetCollection getValue/getCollection均会到该逻辑.

ObjectReader reader = reader();

ObjectReader. innerSelect -> EntityAccess.select方法根据entityObject,EntityViewInfo(包含selector,filter,sorter等)拼装出sql,并查询出结果集,用结果集构造Collection。

  

对于需要查询分录等详细信息时,在ObjectReader类中innerSetChildObject 方法,进一步构造分录的取数sql,并获取结果集,将结果集写入上层Collection中

  

6. ORMapping与外界交互方式

    ORMapping DAO对象的构成

    Context --- 上下文

    EntityObjectInfo --- DAO操作的根对象的元信息描述

    Connection --- 连接( DAO不负责连接释放、事务等与连接相关的处理)

    传入信息

    ObjectValue --- 值对象

    EntityViewInfo --- 包括Selector、Filter、Sorter、Top等信息,DAO根据这些信息来按需从数据源中获取数据以及填充对象;

        EntityViewInfo. getEntryFilters() ---分录过滤条件

        EntryWhere

        返回主对象及所有满足条件的子对象

        EntryALLWhere

        当所有子对象均满足条件时返回主对象

        EntryAnyWhere

        当任何一个子对象满足条件时返回主对象

        分录权限

        不实际进行分录过滤,将分录过滤条件转变形式,使之生成boolean型结果值,用于标记是否满足条件

        EntryFilter设置

        支持设置多级分录权限过滤条件

        调用权限服务

    OQL --- EntityViewInfo的文本化描述,可以与EntityViewInfo互相转换

    IObjectPK --- 值对象的主键,通常用于获取或更新记录

ORMapping

1. ORMapping 概念ORM(对象关系映射,英语:Object Relational Mapping,简称ORM,或O/RM或O/R mapping)的实质就是将关系数据库中的...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信