为什么要使用ORM框架

Django中ORM框架的使用 orm框架介绍 阅读详情

在java程序里用大量的aql语句代替了orm,在数据库由mysql改为oracle时,这些sql语句会由于语法原因大量报错,怎么办?欢迎讨论! 但是如果我们使用orm框架就只要需要更改一下方言,代码都不用改!!
1.什么是ORM
对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

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

3.对象-关系映射解释:
A . 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量
B . 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一
C .易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)
D.易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。
这里写图片描述
在这里插入图片描述
4. ORM的优缺点:
优点:
1)提高开发效率,降低开发成本
2)使开发更加对象化
3)可移植
4)可以很方便地引入数据缓存之类的附加功能
缺点:
1)自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。
2)在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。

5. 常用框架:
(1)Hibernate 全自动 需要写hql语句
(2)iBATIS 半自动 自己写sql语句,可操作性强,小巧

欢迎大家点点关注和参与讨论,后续还会持续发布Java方面的文章(面试题)

【Clickhouse从入门到精通】第51篇:ClickHouse权限管理体系详解 摘要 本文是ClickHouse权限管理系列文章的第51篇,重点解析ClickHouse RBAC权限体系中的GRANT/REVOKE机制。文章详细介绍了GRANT语句的基础语法与权限类型,包括SELECT、INSERT等常规权限以及WITH GRANT OPTION转授权功能。特别深入讲解了列级权限的实现方式,通过SELECT(col1,col2)语法实现字段粒度的访问控制,并展示了权限查询与验证方法。本文还对比了ClickHouse 20.4版本前后权限管理体系的差异,为构建安全的多租户数据平台提供了关 阅读详情

相关推荐

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 211

一篇文章带你搞懂为什么要使用 ORM

文章目录一、什么是 ORM?二、为什么要使用 ORM 一、什么是 ORM? ORM(Object-Relational Mapping) 表示对象关系映射。 在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射 简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。 二、为什么要使用 ORM 我们已经学习过:一篇文章带你搞懂 P

南淮北安的博客 2048

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

Michaelis–Menten 曲线 米氏曲线 纵坐标 反应速率求值 朗伯比尔定律

weixin_42809675的博客 2万+

(十二):为什么需要一个新的ORM框架

随着互联网的发展,软件规模越来越大,工场手工业式编码方式已经不适应软件发展的需求。本文先从使用环境分析原因,然后再提出解决方案。 1. ORM使用的大环境发生了变化 随着互联网的发展,软件行业在最近的五年,有了新的发展特点。数据往大的发展,有了大数据;服务往小的发展,有了微服务。互联网系统的主要特点:高并发访问,不允许宕机,对运行环境越来越苛刻。NOSQL数据库、微服务及分布式的出现主要就是为了解决这些问题。软件需求越来越复杂了,虽然出现的新技术,也能基本解决苛刻的需求了,但是软件生产率并没有提...

abckingaa的博客 2859

九齐NY8B062F单片机:12位ADC与4路PWM在智能家居控制中的实战应用

本文详细介绍了九齐NY8B062F单片机在智能家居控制中的实战应用,重点解析其12位ADC高精度传感器数据采集和4路PWM精准驱动技术。通过实际案例展示如何利用该单片机实现温湿度监测、灯光调节及电机控制,并分享低功耗设计与抗干扰方案,为低成本高可靠性的智能家居设备开发提供完整解决方案。

rnn9storyteller的博客 730

Java后端开发实战:手把手教你用e签宝API搞定电子合同签署(附完整代码)

本文详细解析了Java后端开发中如何通过e签宝API实现电子合同签署的全流程,包括环境配置、核心架构设计、Token管理、签署流程实现及回调处理等关键环节。通过完整的代码示例和最佳实践,帮助开发者高效集成电子签名服务,提升企业数字化转型效率。

weixin_42662293的博客 530

ORM框架详解:为什么不直接写SQL?

ORM是"Object-Relational Mapping"的缩写,中文通常翻译为"对象关系映射"。这个术语听起来可能有点抽象,让我们通过一个简单的比喻来理解它:想象你是一位翻译官,你的工作是在两种完全不同的语言之间进行翻译。在编程世界中,ORM就像这样一位翻译官,它在面向对象的编程语言(如Java、Python、C#等)和关系型数据库(如MySQL、PostgreSQL、Oracle等)之间进行"翻译"。使用面向对象的方式来操作数据库将数据库表映射到编程语言中的类。

m0_74824496的博客 1355

MDM主数据清洗和编码集成说明

绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。...

数通畅联 3318

什么是ORM?为什么用ORM?浅析ORM的使用及利弊

什么是ORM ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 为什么用ORM 在程序开发中,数据库保存的表,字段与程序中的实体类之间是没有关联的,在实现持久化时就比较不方便。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。这种方案存在以下不足:

lisheng19870305的专栏 6816

YOLOv11损失函数原理与源码解读:从调参血泪史到源码级优化

本文深入解析YOLOv11目标检测模型的损失函数设计,揭示其相比前代的关键改进。重点剖析了回归损失中动态权重的小目标优化、分类损失的带温度系数softmax、以及目标损失的自适应阈值机制等创新点。作者通过源码分析指出常见实现陷阱,如梯度回传的正确处理方式、标签分配的匹配策略等。结合实战经验,给出针对小目标检测、类别误判等典型问题的调参建议,并分享实用的调试工具代码片段。最后强调损失函数调参需结合具体任务,指出后处理对实际部署效果的重要影响。全文以工程实践为导向,为开发者提供可直接落地的优化思路。

as1225120794的博客 441

echarts 饼图(加载进度条动画效果)

1、外侧动画细线效果运动“custom”自定义系列中“renderItem”属性来实现,动态修改起始角度和终止角度。2、圆环使用" pie "类型添加两个data值来画百分比圆环,动态修改data中的值。

God's asylum的博客 1630

为什么要使用ORM技术?和 JDBC 有何不一样?

为什么要使用ORM技术?和 JDBC 有何不一样?       1、繁琐的代码问题:       用JDBC的API编程访问数据库,代码量较大,特别是访问字段较多的表的时候,代码显得繁琐、累赘,容易出错,例如:       public void addAccount(final Account account) throws DAOException {          final Con

WWWTYB的专栏 7519

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ORM框架使用优缺点

1. 什么是ORM? 对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联

public 3万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用Python ORM框架来操作MySQL

Python 还有另一种方式可以与 MySQL 进行交互,这种方式采用的是 ORM 框架。

weiye2012的博客 1439

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

关于ORM框架的认识与使用

ORM,又称O/R Mapping,即数据持久层框架,去年由于在公司项目的原因,项目中使用到Spring.NET+iBatis.NET+MVP框架,但总是感觉iBatis.NET使用起来不怎么好用,大家在使用ORM框架上有没什么技巧,或有更好的ORM框架,对于Linq、NHibernate等ORM框架有什么看法没? 一般在做项目时,什么选哪一种?  大家也可以分享一下在项目中使用的体会...

jiangnan87108的专栏 369

JDBC与ORM框架的协作使用

JDBC(Java Database Connectivity)是Java平台用于访问数据库的标准接口,而ORM框架则是一种面向对象的关系映射框架,它可以帮助开发者更方便地与数据库进行交互。在数据操作方面,ORM框架提供了丰富的数据映射功能,使得开发者可以更方便地进行数据库操作。此外,ORM框架还支持多种数据操作模式,如分页查询、排序查询等,进一步提高了数据操作的效率和灵活性。同时,ORM框架提供了丰富的数据映射功能,使得开发者可以更方便地进行数据库操作,减少了手动编写SQL语句的繁琐程度。

searchboy2025的博客 61

如何使用ORM框架进行数据库操作?

使用ORM框架进行数据库操作可以显著提高应用程序的开发效率和可维护性。以下是如何使用ORM框架进行数据库操作的一般步骤:

m0_47946173的博客 1383

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

一、我的看法 我记得曾经有一篇博客是介绍的litepal的使用,在这篇博客中我提到过:本来以为android本身提供的API已经封装的够好了,根本不需要什么ORM框架了,但是在使用了litepal后,我感觉使用ORM框架还是很有必要的,下面是我对ORM和android API的几点看法: 1、做为API级别, android只能广义封装,而不能特定去封装一个API,所以android 对sqlite

l_blackeagle的博客 283

ORM框架Hibernate框架的使用以及搭建方式

持久层ORM框架Hibernate框架的使用以及搭建方式 前言 hibernate的概念: hibernate是一个ormapping框架(ORM框架,全自动ORM框架) hibernate是一个数据库的操作框架即持久层框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库(SQL语句由Hibernate根据对象自动生成)。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户

zhx__的博客 6084

Jimmer ORM 框架使用教程

Jimmer 是一个革命性的 ORM(对象关系映射)框架,适用于 Java 和 Kotlin 语言。它不仅提供了经典的 ORM 功能,还引入了新的 ORM 部分,支持远程异常处理、快速创建 GraphQL 服务、跨微服务远程实体关联等功能。Jimmer 的目标是提供一个完整的集成解决方案,帮助开发者更高效地进行数据操作和微服务开发。 ## 2、项目快速启动 ### 环境准备 - Java 8...

gitblog_01143的博客 459

python安装orm_Python流行ORM框架sqlalchemy安装与使用教程

本文实例讲述了Python流行ORM框架sqlalchemy安装与使用。分享给大家供大家参考,具体如下:安装http://docs.sqlalchemy.org1、安装#进入虚拟环境#执行./python3 -m pip installimport sqlalchemyprint(sqlalchemy.__version__) # 1.1.15我这里使用的版本是1.1.15创建连接对象http:/...

weixin_39926193的博客 208

python中orm框架sqlalchemy使用

python中orm框架sqlalchemy使用 文章目录python中orm框架sqlalchemy使用一、简介二、准备2.1 官网地址2.2 依赖包安装三、使用3.1 创建映射对象3.2 创建数据库连接3.3 查询3.3.1 常用查询3.3.2 条件查询3.3.3 直接sql语句查询3.4 插入3.4.1 单条插入3.4.2 批量插入3.4.3 使用sql语句插入3.4.4 忽略已存在的插入3...

panda-star的博客 1232

mysql orm java_基于Java ORM框架的使用详解

ORM框架不是一个新话题,它已经流传了很多年。它的优点在于提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立了很好的映射关系。我们在这里主要关注Java中常用的两个ORM框架:Hibernate和iBatis。下面来介绍这两个框架简单的使用方法,如果将来有时间,我会深入的写一些更有意思的相关文章。HibernateHibernate是一个持久化框架和ORM框架,持久化和ORM是两...

weixin_29785723的博客 236

Android ORM框架 GreenDao 的使用详解

一、前言 关于 Android 中常用的数据存储方式我们前面已经讲了 Sp 存储 和 文件存储,但是对于数据量比较大,并且结构复杂的数据我们想要存储只能通过数据库进行处理,Android 中提供了一个 SQLite 数据库,但是使用起来比较繁琐和复杂,所以 Android 又推出了 Room 持久性库,Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。但是我们今天不讲 Room 这个组件(以后讲 Jetpack

weixin_38478780的博客 1165

使用反射封装ORM框架,真香!

我们在做开发的过程中,需要经常对数据库进行操作,这时我们就需要使用到ORM框架,例如比较常用的MyBatis和Hibernate。下面我将对ORM框架进行详细的介绍并且封装一个简单的ORM框架。

Mr_wxc的博客 3420
上一篇: 关于《深入理解java虚拟》
下一篇: 怎么更好的去使用Mysql
Formor_
博客等级 码龄7年 7粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值