`
天空不空
  • 浏览: 94768 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

什么是ORM?

阅读更多

一、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是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

 

分享到:
评论

相关推荐

    ORM

    ORM(Object-Relational Mapping,对象关系映射)是软件开发中的一个重要概念,它提供了一种在关系数据库和面向对象编程之间架起桥梁的方法。通过ORM技术,开发者可以使用面向对象的方式来操作数据库,而无需直接编写...

    Java面试题55.ORM是什么?ORM框架是什么?.mp4

    Java面试题55.ORM是什么?ORM框架是什么?.mp4

    Doctrine ORM for PHP

    什么是 ORM? ORM 全称 Object-Relational Mapping, 是一种程序设计技术,它使得程序员可以使用面向对象的方法来访问和操作关系数据库。ORM 技术可以将对象模型转换为关系数据库模型,从而实现数据的持久化存储。 ...

    55.ORM是什么?ORM框架是什么?.avi

    java面试宝典

    Hibernate数据持久层框架.rar

    什么是ORM? ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作...

    mybatis面试题(经典问答)

    3.什么是ORM? 全称是对象关系映射。对象映射关系数据库。对象关系映射(ORM,或O/RM,或O/R映射)用于实现面向对象编程语言中不同类型系统之间的数据转换。简而言之,ORM就是用元数据来描述对象与数据库的映射关系...

    Hibernate面试问题大全

    1. 什么是ORM? ORM(Object-Relational Mapping)是一种技术,它将Java应用程序中的对象自动持久化到关系数据库的表中。通过ORM,开发者可以使用面向对象的方式处理数据库操作,无需直接编写SQL语句。 2. ORM包含...

    java知识点,面试题总结

    - 什么是ORM?Hibernate如何实现ORM? - 描述Hibernate的Session生命周期和状态转换。 - Hibernate的延迟加载(Lazy Loading)是什么?有何优缺点? - 解释Hibernate的级联操作(Cascade),有哪些级联类型? -...

    ORM Framework

    4. **orm??**:这个文件名可能是ORM的某种简写或特定实现,具体细节无法确定,需要查看源码来了解详情。 5. **Simple.Data-master**:Simple.Data是一个轻量级的ORM框架,它提供了一种简单的方式来访问数据库,无需...

    ORM思想的深入学习ORM.zip

    ORM,全称Object-Relational Mapping,即对象关系映射,是一种编程技术,用于将关系数据库的数据模型映射到面向对象的软件应用中。在Java领域,Hibernate和MyBatis是两种广泛应用的ORM框架,它们极大地简化了数据库...

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

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

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

    HSWeb-Easy-ORM 是一个开源的简单对象关系映射(ORM)工具,设计初衷是为了简化动态表单的处理。ORM 工具的核心作用在于桥接数据库与编程语言,允许开发者通过面向对象的方式操作数据库,避免了直接编写 SQL 语句的...

    sqlite3的ORM框架

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

    K-ORM 自定义ORM工具

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

    ORM对象关系映射

    对象关系映射(ORM) 对象关系映射(ORM)是一种概念性的、易于理解的模型化数据的方法,基于三个核心原则:简单、传达性、精确性。ORM 方法论提供了概念性的模型化数据的方法,基于数据模型创建正确标准化了的结构...

    Moon.Orm下载

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

    eform集成开发手册

    eform集成开发手册 eform集成开发手册是专门为eform开发人员设计的指南,旨在帮助开发者快速了解eform的集成开发流程和技术细节。该手册涵盖了eform集成开发的各个方面,包括系统文件说明、系统表结构说明、eform ...

    php中的orm

    在IT行业中,ORM(Object-Relational Mapping)是一种软件设计技术,它允许程序员用面向对象的方式来操作数据库,而无需直接编写SQL语句。在PHP中,ORM被广泛应用于Web开发,使得开发人员能够以更加抽象和高效的方式...

    orm的详细解释概念

    对象关系映射(ORM,Object-Relational Mapping)是一种编程技术,它旨在解决面向对象编程语言与关系数据库管理系统之间的不匹配问题。ORM 提供了一种方式,使得开发者可以用面向对象的方式来处理数据库,而无需直接...

Global site tag (gtag.js) - Google Analytics