ORM概念

news2024/11/26 4:49:40

ORM概念

ORM是Object Relational Mapping 对象关系映射。简单来说,就是把数据库表和实体类及实体类的属性对应起来,让开发者操作实体类就实现操作数据库表。

ORM(Object Relation Mapping)对象关系映射

思想:将关系数据库中表中的记录映射为对象,以对象的形式展现,可以把对数据库的操作转化为对对象的操作。

采用元数据来描述对象-关系映射细节,元数据通常采用XML格式,存放在专门的对象-关系映射文件中。

ORM框架:为了解决面型对象与关系数据库存在的互不匹配的现象的框架。

当前ORM框架(JAVA)主要有五种:

(1)Hibernate 全自动 需要写hql语句
(2)iBATIS 半自动 自己写sql语句,可操作性强,小巧
(3)mybatis
(4)eclipseLink
(5)JFinal

当前ORM框架(net)主要有五种:

Net系列:

  • NHibernate
    
  • NBear
    
  • Castle ActiveRecord
    
  • iBATIS.NET
    
  • DAAB 
    
  • EntitysCodeGenerate
    
  • EntityFormerWork

  • Linq to sql

  • PetaPoco

为什么需要ORM

当我们实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。

基本关系

在这里插入图片描述

在这里插入图片描述

ORM的优缺点

优点:
1)提高开发效率,降低开发成本
2)使开发更加对象化
3)可移植
4)可以很方便地引入数据缓存之类的附加功能
缺点:
1)自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。
2)在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。

ORM所在的位置

在这里插入图片描述

对比

配置对比
Hibernate

  1. Xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系;

  2. hibernate.cfg.xml:它是Hibernate框架的核心配置文件。

MyBatis

  1. mybatis-config.xml :mybatis的全局配置文件

  2. xxxMapper.xml:映射文件

类对比

JDBC

(1)DriverManager,用于注册数据库连接
(2)Connection,与数据库连接对象
(3)Statement/PrepareStatement,操作数据库SQL语句的对象
(4)ResultSet,结果集或一张虚拟表

MyBatis

(1)SqlSession对象,
(2)Executor接口,
(3)MappedStatement对象,
(4)ResultHandler对象,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百货集团数字化转型方案

一、案例简述 后疫情时代对零售业,特别是百货和购物中心造成了巨大冲击,驱使实体零售业拥抱数字化转型。从总体上看,实体零售企业对于数字化转型的必要性已有充分的认知及一定的实践操作,但数字化仍处于起步阶段,线上…

”消费全返“是割韭菜,非也,广告电商引领全新“全返”模式

谈及消费全返,大家可能会避而不谈,因为有“云联惠”这个实实在在的案例发生,各大企业都怕进局子,现在都不弄消费全返了。说到“云联惠”,为什么它能在短时间内火得这么快,因为他们以“全返”为阙头&#xf…

驱动开发2

P 19 驱动设计的思想:面向对象/分层/分离 用结构体来表示某个对象 分离思想 将某个有很多类似操作的写在一起,这样我们根据参数就可以替换不同的步骤了 1、上下分层 将设计硬件的比如 初始化gpio、设置GPIO写成board.c 同用的就写在drv.c里面 2、左右分…

python数据分析与可视化

//注:绿色为正确答案,红色为错误答案,粉色为本人做错之后,系统给出的答案,可能有些题本人未标记,但是是可以区分的,题目中存在重复题目,下面有三张图的代码建议交代码块,…

中小企业知识管理难题怎么做?天翎与群晖携手给出最优解

编者按:在知识经济越来越重要的今天,做好知识管理对企业来说至关重要,但是中小企业的知识管理之路,比起大企业更加困难,该如何应对呢?本文分析了现代中小企业面临的知识管理困境,并进一步提出天…

Spring:AOP通知获取数据(13)

AOP通知获取数据AOP通知获取参数非环绕通知获取参数方式环绕通知获取参数方式AOP通知获取返回值环绕通知获取返回值返回后通知获取返回值AOP通知获取数据的案例AOP通知获取参数 非环绕通知获取参数方式 在方法上添加JoinPoint,通过JoinPoint来获取参数, 这里只使用…

[附源码]Python计算机毕业设计出版社样书申请管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

源自双11混部实战,Koordinator 如何保障应用服务质量?

作者:张佐玮、韩柔刚 Koordinator 团队 在洪峰流量下,如何确保应用的服务质量不受影响的同时,最大限度提升资源利用率,是考验混部技术成熟度的关键。本文将展开介绍Koordinator在资源隔离,单机QoS保障,以及…

4、SySeVR复现——Generating slices

目录 1、准备阶段 2、生成实验数据的CFG图 3、生成实验数据的PDG图 4、生成实验数据的调用图 5、获取四种类型的SyVCs 6、提取SeVCs 7、获取漏洞的代码行号 8、给切片打标签 9、将标签写入切片 1、准备阶段 实验数据我只用这些: (1)…

Spring源码深度解析:六、ConfigurationClassPostProcessor

一、前言 文章目录:Spring源码分析:文章目录 ConfigurationClassPostProcessor是非常重要的一个 后处理器。 ConfigurationClassPostProcessor完成了 配置类的解析和保存以及Component注解、Import等注解的解析工作 。将所有需要注入的bean解析成BeanD…

【学习日志】2022.11.18 Technical Artist Training Tutorial----Unlit Shader Of Unity

着色器 - Unity 手册 (unity3d.com)https://docs.unity3d.com/cn/current/Manual/Shaders.html 常用板块(Properties) _MainTex("MainTex",2D)"black"{} _Float("Float",Float)0.0 _Range("Range",Range(0.0,1…

【测试沉思录】14. 性能测试中的系统资源分析之一:CPU

作者:马海琴 编辑:毕小烦 在日常的性能测试中,我们除了关注应用本身的性能,比如服务的响应时间、TPS 等,也需要关注服务器本身的资源使用情况,比如 CPU、内存、磁盘、网络等。当然,不光要分析服…

Java中string、int、char之间互相转换

String转int (1)Integer.parseInt(String) 方法 支持“负号”! String str "123"; int num Integer.parseInt(str); 如果这个字符串中间有字母会报错! (2)Integer.valueOf(String) 方法 …

白炽灯护眼还是LED护眼?2022年被央视315表扬的护眼灯

根据各方面对比下来,还是LED灯更护眼的,听我分析一下。 白炽灯是最早的出现的灯具,是由灯丝通电加热到白炽状态的,热辐射比较严重,灯光泛黄,并且白炽灯的光电转换效率低,费电,寿命太…

排序算法图解(六):归并排序

文章目录1 归并排序简介2 思路简介及图解3 代码实现写在最后1 归并排序简介 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并&#xf…

stm32cubemx hal学习记录:FreeRTOS软件定时器

一、配置过程 1、配置RCC、USART1、时钟84M 2、配置SYS,将Timebase Source修改为除滴答定时器外的其他定时器。 3、初始化LED的两个引脚、两个按键引脚 4、开启FreeRTOS,v1与v2版本不同,一般选用v1即可 5、打开定时器选项 6、创建两个定…

健身中心健身管理系统的设计与实现(源码+数据脚本+论文+技术文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Mysql进阶学习(三)排序查询与常见函数

Mysql进阶学习(三)排序查询与常见函数一、进阶3:排序查询1、语法:2、特点:3、排序方式3.1、按单个字段排序3.2、添加筛选条件再排序案例:查询部门编号>90的员工信息,并按员工编号降序3.3、按…

基于SSM实现企业生资源管理系统-ERP系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

FlinkSql+Stream综合使用+广播流

Flink状态管理状态的分类Flink容错机制State Vs CheckPointCheckPoint原理State状态后端/State存储介质状态恢复和重启策略SavePointFlink TableAPI&SQL案例广播流状态管理 状态的分类 State ManagerState–开发中推荐使用:Flink自动管理/优化,支持多…