什么是ORM?为什么要用ORM?

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

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

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

什么是ORM

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

举例来说,比如要完成一个购物打折促销的程序,用 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 两个类去完成

原文地址:https://www.cnblogs.com/MyNorth/p/12686611.html

时间: 2024-10-06 10:46:01

什么是ORM?为什么要用ORM?的相关文章

orm.TextField undefined (type orm.Ormer has no field or method TextField)

今天用go语言的orm的时候,操作text类型插入数据库时候,进行类型转时候上面总爆红,orm.TextField undefined (type orm.Ormer has no field or method TextField),显示这个错. 解决方法是把orm的包起一个别名 像这样. 原文地址:https://www.cnblogs.com/miria-486/p/10229286.html

atitit.orm的缺点与orm框架市场占有率,选型attilax总结

1. attilax的orm框架要求 1 2. orm框架市场占有率 2 3. spring jdbc templt 3 4. eclipselink /toplink  不好用 4 5. jooq 的总结 4 6. attilax的选择 atiorm 4 7. 参考 4 1. attilax的orm框架要求 1.无需配置文件或注解..直接从map.json生成sql 2.直接获取sql..无需连接数据库..方便调试.或这sql传输. 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:

打造android ORM框架opendroid(一)——ORM框架的使用

一.我的看法 我记得曾经有一篇博客是介绍的litepal的使用,在这篇博客中我提到过:本来以为android本身提供的API已经封装的够好了,根本不需要什么ORM框架了,但是在使用了litepal后,我感觉使用ORM框架还是很有必要的,下面是我对ORM和android API的几点看法: 1.做为API级别, android只能广义封装,而不能特定去封装一个API,所以android 对sqlite的封装已经很强大了. 2.作为开发者,我们需要为项目提供足够适配的解决方案,可能ORM框架比API

python—day60 Object Relational Mapping(ORM) ORM连表查询 ORM进阶

import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BookManageSystem.settings') # 启动Django项目 import django django.setup() from app01 import models # 多对多操作 # 1.create # 做了两件事情 # 1.创建了一个名为ke

自己动手写ORM(01):解析表达式树生成Sql碎片

什么是ORM框架:   ORM即对象关系映射(Object Relational Mapping,简称ORM),是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. 自己也用过很多ORM框架,比如微软的EF,Hibernate.轻量级一点的有Depper等等.这些框架说白了就是让我们能像操作对象那样去操作数据库. 鄙人是个比较懒的程序猿,总想这写更少的代码做更多的事情,最近不是很忙,于是

Django之ORM操作

ORM基本增删改查操作: 1 # 增 2 models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs 3 obj = models.Tb1(c1='xx', c2='oo') 4 obj.save() 5 6 # 查 7 models.Tb1.objects.get(id=123) # 获取单条数据,不存在则报错(不建议) 8 models.Tb1.objects.all() # 获取全部 9 models.Tb1

.NET ORM 的 “SOD蜜”--零基础入门篇

PDF.NET SOD框架不仅仅是一个ORM,但是它的ORM功能是独具特色的,我在博客中已经多次介绍,但都是原理性的,可能不少初学的朋友还是觉得复杂,其实,SOD的ORM是很简单的.下面我们就采用流行的 Code First的方式,一步步来了解下. 一.准备工作 1.1,添加SOD包引用 首先建立一个控制台项目,并使用程序包管理器添加PDF.NET SOD的程序引用: PM> Install-Package PDF.NET 更多详细使用信息说明,请参考nuget 网站说明 https://www

Python教程:ORM连接Sqlite数据库,软件架构基础

python语言因其语法简单易学习,且高效率应用广,近几年来发展迅猛,一度进入编程语言排行榜前六名.为了使程序员能更快的学习Python语言,所以写的此教程.也可以说是对自己学习的总结.但文章尽量会使用教学的口吻.希望能帮助更多想要学习Python的你. 本教程很多概念性的东西可能不在累赘,建立在大家已经懂得的基础之上.如有些许不懂还请自行学习.致力于程序员高手可以快速入门Python语言. 文章会在今日头条-做全栈攻城狮首发.地址:http://www.toutiao.com/m5443584

[转]ORM的优缺点

ORM[Object-Relation-Mapping]对象关系映射. 这个名词已经出来好几年了.已经不陌生.  以前在项目中针对相对复杂业务逻辑时一般采用领域模型驱动方式进行业务概述,分析和建模. 其中在设计阶段我第一次接触ORM这个概念.  针对实际项目中ORM 采用的是Nhibernate实现底层数据持久化.  当然现在ORM成熟的工具已经很多了. 本篇的目的结合以往实际编程经验.系统整理ORM原型概念. <1>什么是ORM? 解释这个名词并不难.先了解一下ORM由来. 其实ORM的需求

ORM即 对象-关系映射(转自:微冷的雨)

ORM即 对象-关系映射: 将数据库中的数据关系表,映射为实体对象. 灵动思绪EF(Entity FrameWork) 作者: 微冷的雨  来源: 博客园  发布时间: 2013-01-22 16:28  阅读: 10119 次  推荐: 16   原文链接   [收藏] 很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前,我们先来看下ORM ORM