orm_ormlite - CSDN
orm 订阅
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示着额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。 展开全文
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示着额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。
信息
外文名
Object Relational Mapping
别    称
ORM
中文名
对象关系映射
适用领域范围
程序开发
对象关系映射定义
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
收起全文
精华内容
参与话题
  • 什么是ORM?为什么要用ORM

    千次阅读 2020-02-22 02:30:52
    什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件...什么是ORM 即O...

    什么是“持久化”

    持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

    什么是 “持久层”

    持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。

    什么是ORM

    即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

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

    为什么用ORM

    在程序开发中,数据库保存的表,字段与程序中的实体类之间是没有关联的,在实现持久化时就比较不方便。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。这种方案存在以下不足:

    1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
    2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度
    ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁

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

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

    展开全文
  • ORM框架简介及优缺点

    万次阅读 多人点赞 2018-09-06 11:57:02
    一、ORM简介  对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,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?

    什么是“持久化”
    持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
    什么是“持久层”
    持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
     
    什么是ORM
    即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
     
    为什么要做持久化和ORM设计(重要)
    在目前的企业应用系统设计中,MVC,即 Model(模型)- View(视图)- Control(控制)为主要的系统架构模式。MVC 中的 Model 包含了复杂的业务逻辑和数据逻辑,以及数据存取机制(如 JDBC的连接、SQL生成和Statement创建、还有ResultSet结果集的读取等)等。将这些复杂的业务逻辑和数据逻辑分离,以将系统的紧耦合关系转化为松耦合关系(即解耦合),是降低系统耦合度迫切要做的,也是持久化要做的工作。MVC 模式实现了架构上将表现层(即View)和数据处理层(即Model)分离的解耦合,而持久化的设计则实现了数据处理层内部的业务逻辑和数据逻辑分离的解耦合。而 ORM 作为持久化设计中的最重要也最复杂的技术,也是目前业界热点技术。

    简单来说,按通常的系统设计,使用 JDBC 操作数据库,业务处理逻辑和数据存取逻辑是混杂在一起的。
    一般基本都是如下几个步骤:
    1、建立数据库连接,获得 Connection 对象。
    2、根据用户的输入组装查询 SQL 语句。
    3、根据 SQL 语句建立 Statement 对象 或者 PreparedStatement 对象。
    4、用 Connection 对象执行 SQL语句,获得结果集 ResultSet 对象。
    5、然后一条一条读取结果集 ResultSet 对象中的数据。
    6、根据读取到的数据,按特定的业务逻辑进行计算。
    7、根据计算得到的结果再组装更新 SQL 语句。
    8、再使用 Connection 对象执行更新 SQL 语句,以更新数据库中的数据。
    7、最后依次关闭各个 Statement 对象和 Connection 对象。

    由上可看出代码逻辑非常复杂,这还不包括某条语句执行失败的处理逻辑。其中的业务处理逻辑和数据存取逻辑完全混杂在一块。而一个完整的系统要包含成千上万个这样重复的而又混杂的处理过程,假如要对其中某些业务逻辑或者一些相关联的业务流程做修改,要改动的代码量将不可想象。另一方面,假如要换数据库产品或者运行环境也可能是个不可能完成的任务。而用户的运行环境和要求却千差万别,我们不可能为每一个用户每一种运行环境设计一套一样的系统。
    所以就要将一样的处理代码即业务逻辑和可能不一样的处理即数据存取逻辑分离开来,另一方面,关系型数据库中的数据基本都是以一行行的数据进行存取的,而程序运行却是一个个对象进行处理,而目前大部分数据库驱动技术(如ADO.NET、JDBC、ODBC等等)均是以行集的结果集一条条进行处理的。所以为解决这一困难,就出现 ORM 这一个对象和数据之间映射技术。

    举例来说,比如要完成一个购物打折促销的程序,用 ORM 思想将如下实现(引自《深入浅出Hibernate》):
    业务逻辑如下:
    public Double calcAmount(String customerid, double amount)
    {
        // 根据客户ID获得客户记录
        Customer customer = CustomerManager.getCustomer(custmerid);
        // 根据客户等级获得打折规则
        Promotion promotion = PromotionManager.getPromotion(customer.getLevel());
        // 累积客户总消费额,并保存累计结果
        customer.setSumAmount(customer.getSumAmount().add(amount);
        CustomerManager.save(customer);
        // 返回打折后的金额
        return amount.multiply(protomtion.getRatio());
    }
    这样代码就非常清晰了,而且与数据存取逻辑完全分离。设计业务逻辑代码的时候完全不需要考虑数据库JDBC的那些千篇一律的操作,而将它交给 CustomerManager 和 PromotionManager 两个类去完成。这就是一个简单的 ORM 设计,实际的 ORM 实现框架比这个要复杂的多

    展开全文
  • ORM入门

    2018-08-09 18:48:59
    对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),用于实现面向对象编程语言里不同类型系统的数据之间的转换。其实是创建了一个可在编程语言里使用的"虚拟对象数据库"。...

     

    关系型数据库和实体间做映射,操作对象的属性和方法,跳过SQL语句

    对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),用于实现面向对象编程语言里不同类型系统的数据之间的转换。其实是创建了一个可在编程语言里使用的"虚拟对象数据库"。Object是可以继承的,是可以使用接口的,而Relation没有这个概念。

         

        ORM简介 
            对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。 
            这种方案存在以下不足: 
            1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口 
            2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。 

            ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM中间件有:Hibernate,ibatis,speedframework。 
            ORM的方法论基于三个核心原则: 
      · 简单:以最基本的形式建模数据。 
      · 传达性:数据库结构被任何人都能理解的语言文档化。 
      · 精确性:基于数据模型创建正确标准化了的结构。 

    展开全文
  • 什么是ORM?为啥要是用ORM

    万次阅读 多人点赞 2018-08-01 15:22:06
    了解orm,先了解以下概念: 什么是“持久化”  持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以...

    了解orm,先了解以下概念:

    什么是“持久化” 
    持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

    什么是 “持久层” 
    持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。

     

    什么是ORM

    即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

     

    为什么要做持久化和ORM设计(重要)

    在目前的企业应用系统设计中,MVC,即 Model(模型)- View(视图)- Control(控制)为主要的系统架构模式。MVC 中的 Model 包含了复杂的业务逻辑和数据逻辑,以及数据存取机制(如 JDBC的连接、SQL生成和Statement创建、还有ResultSet结果集的读取等)等。将这些复杂的业务逻辑和数据逻辑分离,以将系统的紧耦 合关系转化为松耦合关系(即解耦合),是降低系统耦合度迫切要做的,也是持久化要做的工作。MVC 模式实现了架构上将表现层(即View)和数据处理层(即Model)分离的解耦合,而持久化的设计则实现了数据处理层内部的业务逻辑和数据逻辑分离的解耦合。 而 ORM 作为持久化设计中的最重要也最复杂的技术,也是目前业界热点技术。

    简单来说,按通常的系统设计,使用 JDBC 操作数据库,业务处理逻辑和数据存取逻辑是混杂在一起的。
    一般基本都是如下几个步骤:
    1、建立数据库连接,获得 Connection 对象。
    2、根据用户的输入组装查询 SQL 语句。
    3、根据 SQL 语句建立 Statement 对象 或者 PreparedStatement 对象。
    4、用 Connection 对象执行 SQL语句,获得结果集 ResultSet 对象。
    5、然后一条一条读取结果集 ResultSet 对象中的数据。
    6、根据读取到的数据,按特定的业务逻辑进行计算。
    7、根据计算得到的结果再组装更新 SQL 语句。
    8、再使用 Connection 对象执行更新 SQL 语句,以更新数据库中的数据。
    7、最后依次关闭各个 Statement 对象和 Connection 对象。

    由上可看出代码逻辑非常复杂,这还不包括某条语句执行失败的处理逻辑。其中的业务处理逻辑和数据存取逻辑完全混杂在一块。而一个完整的系统要包含成 千上万个这样重复的而又混杂的处理过程,假如要对其中某些业务逻辑或者一些相关联的业务流程做修改,要改动的代码量将不可想象。另一方面,假如要换数据库 产品或者运行环境也可能是个不可能完成的任务。而用户的运行环境和要求却千差万别,我们不可能为每一个用户每一种运行环境设计一套一样的系统。
    所 以就要将一样的处理代码即业务逻辑和可能不一样的处理即数据存取逻辑分离开来,另一方面,关系型数据库中的数据基本都是以一行行的数据进行存取的,而程序 运行却是一个个对象进行处理,而目前大部分数据库驱动技术(如ADO.NET、JDBC、ODBC等等)均是以行集的结果集一条条进行处理的。所以为解决 这一困难,就出现 ORM 这一个对象和数据之间映射技术。

    举例来说,比如要完成一个购物打折促销的程序,用 ORM 思想将如下实现(引自《深入浅出Hibernate》):
    业务逻辑如下:
    public Double calcAmount(String customerid, double amount) 
    {
        // 根据客户ID获得客户记录
        Customer customer = CustomerManager.getCustomer(custmerid); 
        // 根据客户等级获得打折规则
        Promotion promotion = PromotionManager.getPromotion(customer.getLevel()); 
        // 累积客户总消费额,并保存累计结果
        customer.setSumAmount(customer.getSumAmount().add(amount); 
        CustomerManager.save(customer); 
        // 返回打折后的金额
        return amount.multiply(protomtion.getRatio()); 
    }
    这 样代码就非常清晰了,而且与数据存取逻辑完全分离。设计业务逻辑代码的时候完全不需要考虑数据库JDBC的那些千篇一律的操作,而将它交给 CustomerManager 和 PromotionManager 两个类去完成。这就是一个简单的 ORM 设计,实际的 ORM 实现框架比这个要复杂的多。

    展开全文
  • 自己动手写轻量级ORM(C#)

    热门讨论 2020-07-29 14:20:53
    最近在看反射,突然想写一个ORM工具,要轻量级的,不要配置文档,先不管效率,就是一个小工具,在项目初期方便挂数据库。 我的目标就是在数据库中建个表,在项目中写个模型,然后用上这个ORM工具,就能实现数据库的...
  • ORM进阶之 ORM简介

    万次阅读 热门讨论 2015-08-12 20:15:50
    1.什么是ORM  ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需...
  • ORM

    千次阅读 2018-12-20 14:22:02
    ORM  对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动...
  • 什么是ORM

    千次阅读 2018-10-19 21:58:06
    什么是ORM?    MVC框架中重要的一部分就是ORM,实现了数据模型与数据库的解耦,即数据模型不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。    ORM是对象关系映射的简称,主要任务是:    ...
  • ORM的详解

    2019-08-23 01:26:01
    有很多小伙伴都不太理解ORM是什么,其实不用想象的那么复杂。我们先根据3W1H去理解。who:首先ORM可以立即为(Object/Relation Mapping): 对象/关系映射what:其次ORM可以得到持久化对象when:当需要满足Java对象得到...
  • ORM的优缺点

    万次阅读 多人点赞 2012-03-29 18:07:01
    题记:今天同事提到ORM。。。。就说说它吧。。。  1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象...
  • ORM的概念, ORM到底是什么

    千次阅读 2017-07-01 22:25:36
    一、ORM简介   对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的...
  • ORM是什么,ORM的优缺点

    千次阅读 2018-11-24 02:17:36
    ORM的介绍 ORM的全称是:Object Relational Mapping (对象 关系 映射) 简单的说,orm是通过使用描述对象和数据之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM需要解决的问题是,能否把对象的...
  • .Net 常用的ORM框架

    千次阅读 2016-09-18 11:06:17
    orm主要有几个: sugar:http://www.17ky.net/soft/634.html Chloe.ORM:http://www.17ky.net/soft/554.html Cyqdata :http://www.17ky.net/soft/526.html dos.orm:http://www.17ky.net/soft/390.html Dapper...
  • 02_常见的ORM框架有哪些?

    千次阅读 2019-08-12 14:26:51
    常见的orm框架:Mybatis(ibatis)、Hibernate、Jpa
  • ORM框架使用优缺点

    万次阅读 2016-11-08 14:37:48
    1. 什么是ORM? 对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系...
  • 介绍几种ORM框架

    万次阅读 热门讨论 2017-02-25 17:12:12
    ORM(object relation mapping) 对象关系映射关系 ,面向对象的对象模型和关系型数据之间的相互转换。基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想状态下,基于一个这样一个面向对象的...
  • 包含这个 orm 的jar包 如3.1.0 版在 org.springframework.orm-3.1.0.RELEASE.jar
  • ORM是什么意思

    万次阅读 多人点赞 2016-10-23 00:19:59
    ORM:(Object/Relation Mapping): 对象/关系映射 ORM的实现思想: 将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。 因此ORM的目的是为了方便开发人员...
  • django orm排序

    千次阅读 2015-08-11 16:32:58
    django 排序通常采用如下方式:  1.使用QuerySet的order_by指定查询排序  modelname.objects.filter('updated_time') #ASC 升序  modelname.objects.filter('-updated_time') #DESC 降序  2....
  • SQL与ORM的优缺点

    千次阅读 2018-05-18 11:28:39
    相对来说,ORM的缺点就是SQL的优势地方,而优点也是SQL的劣势地方。优点方便的使用面向对象,语句清晰防注入『这个其实不算ORM的核心,因为比如Phalcon的SQL形式写法也可以防注入』方便动态构造语句,对于不同的表的...
1 2 3 4 5 ... 20
收藏数 222,092
精华内容 88,836
关键字:

orm