ORM的详解

ORM的详解

有很多小伙伴都不太理解ORM是什么,其实不用想象的那么复杂。我们先根据3W1H去理解。

who:首先ORM可以立即为(Object/Relation Mapping): 对象/关系映射

what:其次ORM可以得到持久化对象

when:当需要满足Java对象得到持久化(即保存)的需求

how:因为ORM会将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

个人理解,希望可以帮助到大家!

———————————补充:—————————-

    对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 —— [ 百度百科 ]

广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。
什么是O,R,M?

O(对象模型):实体对象,即我们在程序中根据数据库表结构建立的一个个实体Entity。

R(关系型数据库的数据结构):即我们建立的数据库表。

M(映射):从R(数据库)到O(对象模型)的映射,可通过XML文件映射。

如图:当表实体发送变化时,ORM会帮助我们把实体的变化映射到数据库表。

ORM的详解

 ORM的详解
为什么使用ORM?

提高开发效率:ORM框架自动实现Entity实体的属性与关系型数据库字段的映射。CRUD的工作则可以交给ORM来自动生成代码方式实现。隐藏了数据访问细节,“封闭”的通用数据库交互,他使得我们的通用数据库交互变得简单易行,并且完全不用考虑SQL语句。大大提高我们开发效率, 这样一来也减少我们维护一个复杂 缺乏灵活性数据访问层的成本。

ORM作为是一种思想,帮助我们开发人员跟踪实体的变化,并将实体的变化翻译成sql脚本,执行到数据库中去,也就是将实体的变化映射到了表的变化。这样会给我们带来非常大的便利。但有得必有失,便利的同时也无可避免的带来了一些其他的问题:比如性能降低,复杂的查询ORM仍然力不从心等。

不得不说,任何优势的背后都隐藏着缺点,这是不可避免的。问题在于,我们是否能容忍这些缺点。这需要结合项目的具体情况考虑使用这项技术是否利大于弊 。

这篇博客只是介绍了ORM这种思想,具体实现这种思想的框架已有很多,Herberate,iBatis,NHerberate,,EF等,这些框架都大同小异。下篇博客会以最近项目中使用的EF为例,给大家做详细的介绍。

原文:https://blog.csdn.net/u010028869/article/details/47094973
原文:https://blog.csdn.net/chenmissyu/article/details/80234623

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 黄金k线图基础知识图解

    黄金k线图基础知识图解  黄金可以说是2019下半年最热门的投资品种,如果懂得选择像现货黄金这样但杠杆型产品,收益更是如虎添翼。但如果你只是刚开始进入这个市场的投资者,最好从黄金k线图基础知识图解开始,认证学习关于K线和交易的知识,才能掌握在黄金市场致富的密码。  一、黄金K线分类图解  1、如果按开、收盘价的关系,可分为阳线、阴线和同价线(十字线、T字线、一字线)。  2、如果按实体的大小,可分为大阳(阴)线、中阳(阴)线和小阳(阴)线。  3、如按影线的有无,可以分为光头K线、光脚K线、光头光脚K线和带有上下影的K线

    2022年5月28日
    65
  • jquery 判断array中是否包含指定字符串

    jquery 判断array中是否包含指定字符串

    2021年7月19日
    66
  • c语言qq加密具体思路,悄悄告诉你:C语言如何实现QQ密码大盗

    c语言qq加密具体思路,悄悄告诉你:C语言如何实现QQ密码大盗该楼层疑似违规已被系统折叠隐藏此楼查看此楼一般的盗密码的软件的软件都是通过监视键盘来获得密码,这样操作比较方便,但是这样也存在一定问题,密码有的时候不是很准确,因为有的人输入密码并不是从前到后输入,当然这样的人也是少数,盗密码嘛,当然去得到那些比较粗心的人的密码!通过安装钩子来监视QQ登陆界面就是获得密码的方法,在安装前得先找到登陆窗口的句柄,当钩子安装后,记录键盘,当用户“回车”或是点了“登陆…

    2022年7月20日
    15
  • 删除表中重复数据「建议收藏」

    删除表中重复数据「建议收藏」删除表中重复数据

    2022年4月24日
    35
  • 浏览器visibilitychange事件

    浏览器visibilitychange事件1.项目中,从一个页面进入到另一个页面,然后在这个页面做一些修改后返回到第一个页面,这个时候第一个页面没有刷新只类似tab切换,所以用户的修改未生效。使用html的浏览器事件visibilitychange2.此事件已经得到了广泛应用,但是一些老版本的浏览器需要加相应的前缀3.微信内置的浏览器因为没有标签,所以不会触发该事件手机端直接按Home键回到桌面,也不会触发该事…

    2022年6月29日
    34
  • springboot面试大全

    springboot面试大全https://blog.csdn.net/Kevin_Gu6/article/details/885474241SpringBoot有哪些优点?起步依赖自动配置应用监控2springboot的核心配置文件,以及加载顺序?bootstrap(.properties/.yml)用来加载系统相关的配置application(.properties/.yml)用来…

    2022年5月5日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号