深入理解 ORM框架
1、ORM是什么?
object Relational mapping 对象关系映射,是一种为了解决面向对象与关系型数据库存在不匹配现象的技术,简单说,orm通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中
orm方法论的三个原则:
简单:以最基本的形式建模数据
传达性:数据库接口被任何人都能理解的语言文档化
精确性:基于数据库模型创建正确的标准化结构
为什么使用ORM:
当你开发一个程序的时候,不使用orm,可能会学不少数据访问层的代码,用来从数据库保存、删除、读取对象的信息,但是其中很多代码是重复的,可以减少代码量
ORM解决的主要问题是对象关系映射,域模型和关系模型分别建立在概念模型的基础上,域模型是面向对象的,而关系模型是面向关系的,一般情况下,一个持久类和一个表的对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段
ORM技术特点:
1、提高了开发效率,由于ORM可以自动对Entity对象与数据库表中进行字段和属性的映射,所以我们就不需要了数据访问层
2、ORM提供了对数据库的映射,不用写sql语句就可以操作数据库
ORM优缺点
优点:
提高开发效率,降低开发成本
纯粹的面向对象开发
可移植
缺点
1、从系统结构上来看,采用ORM框架一般分多层,系统的层次多了,会降低系统性能,ORM是完全面向对象的做法,而面向对象的做法也会性能产生影响
2、在数据库应用上可能被误用,主要体现在对持久对象的提取和数据加工处理上,如果用上ORM,可能将全部的数据提取到内存对象中,这就会产生性能问题
3、在做对象持久化时,ORM会持久化所有的对象,我们不希望这样,也会降低程序性能
4、在进行多级联表查询时,ORM语法会变得复杂
5、EF对各个数据的支持程度是不对称的
什么是持久化为什么要持久化
持久,即把内存中的对象永久保存到设备存储中,持久化的主要应用是讲内存中的数据存储在关系型数据库中,也可存储到磁盘文件和XML中
持久层:将数据使用者和数据实体相关联
orm操作数据库流程图:

深入理解 ORM框架的更多相关文章
- 吉特仓库管理系统-ORM框架的使用
最近在园子里面连续看到几篇关于ORM的文章,其中有两个印象比较深刻<<SqliteSugar>>,另外一篇文章是<<我的开发框架之ORM框架>>, 第一 ...
- 我的开发框架之ORM框架
今天我想分享一下我自己的ORM框架,虽然谈不是很好,但我个人认为还是蛮好用的,跟大家分享交流一下. 首先说说我对现在主流的ORM框架的一些看法: 优点: 让程序员不再关注数据库细节,专心在业务逻辑上, ...
- 【EF 4】ORM框架及其流行产品之一EF介绍
导读:跳进了多租户切换数据库的坑,那么就继续走下去吧.在我们的项目中,是运用EF实现对数据库的操作,那么EF其实是.NET系统中,基于ORM框架的一个产品实现.在java那边,则有Hibernate和 ...
- c# 轻量级 ORM 框架 之 Model解析 (四)
关于orm框架设计,还有必要说的或许就是Model解析了,也是重要的一个环节,在实现上还是相对比较简单的. Model解析,主要用到的技术是反射了,即:把类的属性与表的字段做映射. 把自己的设计及实现 ...
- c# 轻量级ORM框架 实现(一)
发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋友会很好理解. 设计该框架的目的:不想重复的写增删改查,把精力放到功能实现上. 发布改框架的原因:希望给 ...
- ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...
- 利用抽象、多态实现无反射的绿色环保ORM框架
最近一直在忙新公司的基础库建设,对系统架构.开发框架及快速开发平台的设计实施都积累了一定的实践经验. 一般的中小型的软件开发公司,如果按照技术储备来衡量软件项目的技术含量的评定依据是可行的.但如果光是 ...
- 封装JDBC:实现简单ORM框架lfdb
作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 框架就是一组可重用的构件,LZ自己写的姑且就叫微型小框架:lfdb.LZ也对其他的ORM框架没有什么了解,现 ...
- 转:ORM框架
转自 程序员成长之路:http://blog.csdn.net/zxc22436/article/details/6875220 对象关系映射(ORM)提供了概念性的.易于理解的模型化数据的方法.OR ...
随机推荐
- Beta冲刺 7
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10129067.html 作业博客:https://edu.cnblogs.com/campus ...
- 自学python之路(day6)
一 函数的定义与调用 现在需要一个程序来实现len()的功能. 计算字符串 s 长度 s='好好学习' #函数的定义def my_len(): i = for k in s: i += print(i ...
- Mysql基础教程-Mysql的字符集查看与修改
Show variables like “%char%”修改mysql的字符集----数据库级1)临时的修改Set global character-set_server=utf82)永久修改Alte ...
- 微信小程序中的小小的遮罩层
<view class='pop_wx_er'> <view>ddddddddddddd</view> <view>ddddddddddddd</ ...
- 2018-软工机试-C-和你在一起
C. 和你在一起 单点时限: 1.0 sec 内存限制: 256 MB 我想和你在一起 直到我不爱你 宝贝 人和人 一场游戏 我愿意为你死去 如果我还爱你 宝贝 反正活着 也没意义 宝贝 我也只能 这 ...
- 跟技术胖学vue+koa
首页热卖商品组件 技术点:1热卖商品封装成单独的组件 2路由和参数的传递 3详情页面路由参数的接收 //首页 <template> <div> <div class= ...
- JAVA003-变量、数据类型
一.变量的三个元素:变量名(房间名字).变量类型(房间的类型).变量值(入住的人). 二.变量的命名规则: 1.驼峰法 2.尽量简单,见名知意 3.长度没有限制 4.满足标志符 ...
- 浅析 java ArrayList
浅析 java ArrayList 简介 容器是java提供的一些列的数据结构,也可以叫语法糖.容器就是用来装在其他类型数据的数据结构. ArrayList是数组列表所以他继承了数组的优缺点.同时他也 ...
- 埃式筛法——求n以内素数
素数筛法的关键就在一个“筛”字.算法从小到大枚举所有数,对每一个素数,筛去它的所有倍数,剩下的就都是素数了. 例如:求1-15中的所有素数. 1. 2是素数(唯一需要事先确定的),因此筛去2的所有倍 ...
- Android版本28使用http请求
Android版本28使用http请求报错not permitted by network security policy android模拟器调试登录的时候报错 CLEARTEXT communic ...