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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM 类加载机制_类加载机制的作用和过程

    JVM 类加载机制_类加载机制的作用和过程一、概述我们知道java代码会被编译为.class文件,这里class文件中的类信息最终还是需要jvm加载以后才能使用。事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转

    2022年8月16日
    5
  • 使用IntelliJ IDEA 配置Maven(入门)「建议收藏」

    使用IntelliJ IDEA 配置Maven(入门)「建议收藏」1.下载Maven官方地址:http://maven.apache.org/download.cgi解压并新建一个本地仓库文件夹2.配置本地仓库路径3.配置maven环境变量4.在IntelliJIDEA中配置maven打开-File-Settings5.新建mavenWEB项目打开-File-New-Project点击NEXT

    2022年5月28日
    56
  • linux的netstat命令_iostat命令详解

    linux的netstat命令_iostat命令详解netstat可以用来查Linx网络系统接口的状态信息,统计信息,打开的socket连接,以及路由表等等。

    2022年9月11日
    2
  • 一小伙使用 python爬虫来算命?

    一小伙使用 python爬虫来算命?文章目录前言1.网站分析2.获取内容3.代码4.实操5.代码整合前言相信在日常生活中,平常大家聚在一起总会聊聊天,特别是女生(有冒犯的doge)非常喜欢聊星座,这个男生什么星座呀,那个男生什么星座呀…今天我就来满足各位的需求,通过爬虫来知晓上天的安排:开搞!1.网站分析第一步呢,咋们先打开这个网站:https://www.horoscope.com/us/index.aspx大家就能看到这个页面了我们今天呢,就先做一个通过星座来得知三天的运势的小玩意,这里有十二个星座,我点了第一个和第二个

    2022年7月25日
    5
  • django官方入门教程_DJango

    django官方入门教程_DJangoDjango入门教程Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。其最大特点自带一个后台管理系统,可以让只要少量代码就能实现后台管理,尤其适合内容管理网站(如博客,新闻,公司首页等信息类网站),适合中小型web网站。Django基本介绍Django安装HelloDjango开发工具

    2022年9月7日
    3
  • python自动化测试—Python自动化框架及工具

    python自动化测试—Python自动化框架及工具1概述手续的关于测试的方法论,都是建立在之前的文章里面提到的观点:功能测试不建议做自动化接口测试性价比最高接口测试可以做自动化后面所谈到的测试自动化也将围绕着接口自动化来介绍。本系列选择的测试语言是python脚本语言。由于其官方文档已经对原理有了比较清楚的解释,本文就不做一些多余的翻译工作了。偏向于实战部分,而且为了偏向实战,也会结合IDE工具和项目组织来进行讲解。理由如下:1.脚本语言,开发和迭代的效率极高2.第三方的扩展库极多,有很我现成的工具可以使用在正式进

    2025年5月28日
    2

发表回复

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

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