一 ORM 简介
对象关系映射 (Object Relational Mapping, 简称 ORM) 模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术简单的说, ORM 是通过使用描述对象和数据库之间映射的元数据, 将程序中的对象自动持久化到关系数据库中那么, 到底如何实现持久化呢? 一种简单的方案是采用硬编码方式, 为每一种可能的数据库访问操作提供单独的方法
这种方案存在以下不足:
1. 持久化层缺乏弹性一旦出现业务需求的变更, 就必须修改持久化层的接口
2. 持久化层同时与域模型与关系数据库模型绑定, 不管域模型还是关系数据库模型发生变化, 毒药修改持久化曾的相关程序代码, 增加了软件的维护难度
ORM 提供了实现持久化层的另一种模式, 它采用映射元数据来描述对象关系的映射, 使得 ORM 中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁 Java 典型的 ORM 中间件有: Hibernate,ibatis,speedframework
ORM 的方法论基于三个核心原则:
. 简单: 以最基本的形式建模数据
. 传达性: 数据库结构被任何人都能理解的语言文档化
. 精确性: 基于数据模型创建正确标准化了的结构
二 ORM 的概念
让我们从 O/R 开始字母 O 起源于 "对象"(Object), 而 R 则来自于 "关系"(Relational)几乎所有的程序里面, 都存在对象和关系数据库在业务逻辑层和用户界面层中, 我们是面向对象的当对象信息发生变化的时候, 我们需要把对象的信息保存在关系数据库中
当你开发一个应用程序的时候(不使用 O/R Mapping), 你可能会写不少数据访问层的代码, 用来从数据库保存, 删除, 读取对象信息, 等等你在 DAL 中写了很多的方法来读取对象数据, 改变状态对象等等任务而这些代码写起来总是重复的
ORM 解决的主要问题是对象关系的映射域模型和关系模型分别是建立在概念模型的基础上的域模型是面向对象的, 而关系模型是面向关系的一般情况下, 一个持久化类和一个表对应, 类的每个实例对应表中的一条记录, 类的每个属性对应表的每个字段
ORM 技术特点:
1. 提高了开发效率由于 ORM 可以自动对 Entity 对象与数据库中的 Table 进行字段与属性的映射, 所以我们实际可能已经不需要一个专用的庞大的数据访问层
2.ORM 提供了对数据库的映射, 不用 sql 直接编码, 能够像操作对象一样从数据库获取数据
三 ORM 的优缺点
ORM 的缺点是会牺牲程序的执行效率和会固定思维模式
从系统结构上来看, 采用 ORM 的系统一般都是多层系统, 系统的层次多了, 效率就会降低 ORM 是一种完全的面向对象的做法, 而面向对象的做法也会对性能产生一定的影响
在我们开发系统时, 一般都有性能问题性能问题主要产生在算法不正确和与数据库不正确的使用上 ORM 所生成的代码一般不太可能写出很高效的算法, 在数据库应用上更有可能会被误用, 主要体现在对持久对象的提取和和数据的加工处理上, 如果用上了 ORM, 程序员很有可能将全部的数据提取到内存对象中, 然后再进行过滤和加工处理, 这样就容易产生性能问题
在对对象做持久化时, ORM 一般会持久化所有的属性, 有时, 这是不希望的
但 ORM 是一种工具, 工具确实能解决一些重复, 简单的劳动这是不可否认的但我们不能指望工具能一劳永逸的解决所有问题, 有些问题还是需要特殊处理的, 但需要特殊处理的部分对绝大多数的系统, 应该是很少的
来源: http://www.bubuko.com/infodetail-2523279.html