ORM 是什么

子凡 2019-03-25 10:15:55
问答

对象关系映射(ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

对象关系映射(Object Relational Mapping,简称 ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。

ORM

ORM 提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得 ORM 中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java 典型的 ORM 中间件有:Hibernate,ibatis,speedframework。

ORM 的方法论基于三个核心原则:

  • 简单:以最基本的形式建模数据。
  • 传达性:数据库结构被任何人都能理解的语言文档化。
  • 精确性:基于数据模型创建正确标准化了的结构。

ORM 解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。

ORM 技术特点

1.提高了开发效率。由于 ORM 可以自动对 Entity 对象与数据库中的 Table 进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。

2.ORM 提供了对数据库的映射,不用 sql 直接编码,能够像操作对象一样从数据库获取数据。

ORM 的优缺点

ORM 的缺点是会牺牲程序的执行效率和会固定思维模式。
从系统结构上来看,采用 ORM 的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM 是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。

在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM 所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了 ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。

在对对象做持久化时,ORM 一般会持久化所有的属性,有时,这是不希望的。但 ORM 是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • WebStorm

    WebStorm 是什么软件

    WebStorm 是一款 JavaScript 开发工具,目前已经被广大中国 JS 开发者誉为“Web 前端开发神器”,与 IntelliJ IDEA 同源,继承了 IntelliJ IDEA 强大的 JS 部分的功能。
  • WebStorm

    WebStorm是什么

    WebStorm 是 jetbrains 公司旗下一款 JavaScript 开发工具。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。
  • Terraform

    Terraform是什么

    Terraform是一个开源基础架构,是HashiCorp创建的代码软件工具。它使用户能够使用称为Hashicorp配置语言的高级配置语言或可选的JSON来定义和配置数据中心基础架构。
  • JetBrains PhpStorm

    PhpStorm是什么软件

    PhpStorm是一个基于JetBrains的IntelliJ IDEA平台的PHP商业跨平台IDE。提供PHP,HTML和JavaScript编辑器,具有动态代码分析,错误预防和PHP和JavaScript代码的自动重构。
  • 红帽 Red Hat CloudForms

    红帽 CloudForms 是什么

    Red Hat CloudForms是一种企业云计算解决方案,可帮助企业创建,管理和监控公共,私有和混合云环境。它可以通过单一平台集成和管理来自多个云平台的云基础架构和服务。
  • IPv6 DNS

    IPv6 DNS是什么

    IPv6 DNS是一项重要的互联网技术,将域名解析为IPv6地址。它支持扩展IP地址池、IPv6与IPv4设备互通、提高性能和安全性。要启用IPv6 DNS,需检查ISP支持、配置路由器、设置IPv6 DNS服务器,并确保设备正确配置。