北京轨道交通建设管理有限公司网站/多地优化完善疫情防控措施
给自己一个目标,然后坚持一段时间,总会有收获和感悟!
国庆假期马上结束,闲暇时间,突然对Ado.Net这个词的由来感兴趣,然后就一顿复习了一遍,顺便也了解了下java关于ORM框架的底层是什么!
目录
- 一、什么是ADO
- 二、ADO.Net和ORM关系
- 三、常见ORM框架
- 四、C#底层技术
- 4.1、ADO.Net
- 4.2、数据库提供程序
- 4.3、映射引擎
- 4.4、查询语言
- 五、Java底层技术
- 5.1、JDBC(Java Database Connectivity)
- 5.2、数据库连接池
- 5.3、反射(Reflection)
- 5.4、缓存(Cache)
- 5.5、事务管理
一、什么是ADO
ADO(ActiveX Data Objects)并不是一个 ORM(对象关系映射)框架,而是一组用于访问数据的组件和接口。
ADO 提供了一种在应用程序中访问和操作数据库的方式,它是面向连接的、基于组件的框架。
ORM 框架则是一种用于简化数据库操作的技术,它通过将数据库表和对象之间进行映射,使得开发人员可以使用面向对象的方式来操作数据库。一些常见的 ORM 框架包括 Entity Framework、Hibernate 等。
二、ADO.Net和ORM关系
C# 的 ADO.Net 是一个用于访问和操作数据库的底层技术框架,它提供了一组类和接口,用于连接数据库、执行 SQL 查询和更新操作,以及处理数据的读取和写入。ADO.Net 是面向连接的、基于组件的框架,提供了直接的数据库访问能力。
ORM(对象关系映射)框架是建立在 ADO.Net 之上的高层抽象,它封装了对数据库的访问细节,并提供了面向对象的方式来进行数据库操作。ORM 框架通过将数据库表映射为对象,将查询结果映射为对象集合,从而简化了数据库操作的编写和维护工作。
在 C# 中,ADO.Net 和 ORM 框架之间存在一定的关系。一方面,ORM 框架通常会使用 ADO.Net 提供的底层数据库连接和执行功能,以实现对数据库的访问。在 ORM 框架中,它们会封装和扩展
ADO.Net 提供的一些类和接口,以提供更加便捷和高级的数据库操作功能。另一方面,如果需要更直接和细粒度地控制数据库操作,开发人员仍然可以直接使用 ADO.Net 的类和接口。
总结来说,ADO.Net 是用于直接访问和操作数据库的底层框架,而 ORM 框架是建立在 ADO.Net 之上的高级抽象,提供了更加方便和面向对象的方式来进行数据库操作。在开发中,可以根据具体需求和情况选择使用 ADO.Net 或 ORM 框架。
三、常见ORM框架
以下大概列举C#和Java常见的ORM框架,评论区大家说说你常用的是那个
编号 | 开发语言 | ORM框架 | 备注 |
---|---|---|---|
1 | C# | Entity Framework(EF) | EF 是微软官方推出的 ORM 框架,它支持多种数据库提供程序,并提供了强大的对象关系映射功能和 LINQ 查询语言的支持。 |
2 | C# | NHibernate | NHibernate 是一个成熟的开源 ORM 框架,它是 Hibernate 在 .NET 平台上的移植版本。NHibernate 支持多种数据库,提供了丰富的映射配置选项,并且具有灵活的查询功能。 |
3 | C# | Dapper | Dapper 是一个轻量级的 ORM 框架,它由 StackExchange 团队开发。与其他 ORM 框架相比,Dapper 更加注重性能,它提供了一种直接执行 SQL 查询并将结果映射为对象的简单方式。 |
4 | C# | LLBLGen Pro | LLBLGen Pro 是一个商业级的 ORM 框架,它提供了广泛的功能和工具,用于配置和生成数据访问层代码。它支持多种数据库,以及高级的数据模型定制和查询功能。 |
5 | C# | SQLSugar | SQLSugar是一个基于.Net平台的ORM(对象关系映射)工具,用于简化数据库操作 |
6 | Java | Hibernate | 是一个开源的 ORM 框架,它以灵活的映射和数据库访问能力而闻名。它支持关系数据库和面向对象的数据模型之间的映射,并提供了一个丰富的查询语言(HQL)来检索数据。 |
7 | Java | MyBatis | 是一款简单易用的持久层框架,它通过 XML 或注解的方式将 Java 对象映射到数据库表。相比于 Hibernate,MyBatis 更加灵活,可以直接编写 SQL 语句,提供了更细粒度的控制权。 |
8 | Java | JPA(Java Persistence API) | JavaEE 的持久化标准,它定义了一套 ORM 规范,为开发人员提供了一种简化数据库操作的方式。JPA 的实现包括 Hibernate、EclipseLink 等。 |
9 | Java | Spring Data JPA | 是 Spring Framework 提供的一个用于简化 JPA 开发的模块。它通过使用 Repository 接口,大大减少了编写数据访问层的代码量,并提供了一些便利的查询方法。 |
四、C#底层技术
在 C# ORM 框架的底层技术中,通常涉及以下几个方面:
4.1、ADO.Net
ORM 框架通常会使用 ADO.Net 提供的底层数据库连接和执行功能。ADO.Net 是微软官方提供的用于访问和操作关系型数据库的框架,它提供了一组类和接口,用于连接数据库、执行 SQL 查询和更新操作。
4.2、数据库提供程序
ORM 框架需要通过数据库提供程序与具体的数据库进行通信。数据库提供程序是用于与不同数据库交互的层,它封装了底层数据库引擎的细节,使得框架可以通过统一的方式与不同类型的数据库进行交互。
4.3、映射引擎
ORM 框架需要进行对象与数据库表之间的映射,将数据库中的数据转换为对象,并将对象的修改保存回数据库。映射引擎负责处理对象与数据库表之间的映射关系,通常使用元数据和配置来定义表和对象之间的对应关系。
4.4、查询语言
ORM 框架通常会提供一种更适合面向对象编程的查询语言,用于进行复杂的查询操作。这些查询语言可以在编译时进行类型检查,提供更丰富和灵活的查询能力,例如 LINQ (Language Integrated Query)。
综上所述,C# ORM 框架的底层技术涉及 ADO.Net、数据库提供程序、映射引擎和查询语言等方面,通过这些技术来实现方便、高效地访问和操作数据库。不同的 ORM 框架可能在处理方式和实现细节上有所差异,但它们都在这些基本技术的基础上进行开发和扩展。
五、Java底层技术
Java ORM 框架的底层技术通常涉及以下几个方面:
5.1、JDBC(Java Database Connectivity)
JDBC 是 Java 提供的一套数据库访问标准,它定义了一组 API 和协议,用于与关系型数据库进行通信。ORM 框架通过 JDBC 提供的 API 将 Java 对象与数据库表之间进行映射和交互。
5.2、数据库连接池
ORM 框架通常会使用数据库连接池来管理数据库连接。数据库连接池是一种重用数据库连接的技术,通过减少频繁创建和关闭数据库连接的开销,提高了应用程序的性能和资源利用率。
5.3、反射(Reflection)
ORM 框架通常会使用反射机制来动态地操作 Java 对象的属性和方法。反射可以在运行时获取对象的类信息,并通过类的属性和方法进行操作,使得 ORM 框架能够根据定义的映射关系,将对象持久化到数据库或从数据库中读取对象。
5.4、缓存(Cache)
为了提高性能,ORM 框架通常会使用缓存技术来存储频繁访问的对象或查询结果。ORM 框架可以借助缓存来减少与数据库的交互次数,提高数据读取的速度。
5.5、事务管理
ORM 框架需要支持数据库事务的管理。事务是一种用来保证数据库操作的一致性和隔离性的机制,ORM 框架通常会提供事务管理的功能,例如通过注解或声明式方式来管理事务的开始、提交或回滚。
综上所述,Java ORM 框架底层技术主要包括 JDBC 作为与数据库交互的接口,数据库连接池、反射、缓存和事务管理等技术来提供高效的对象-关系映射和数据库操作功能。
相关文章:

【ORM】浅聊C#和Java的ORM底层框架
给自己一个目标,然后坚持一段时间,总会有收获和感悟! 国庆假期马上结束,闲暇时间,突然对Ado.Net这个词的由来感兴趣,然后就一顿复习了一遍,顺便也了解了下java关于ORM框架的底层是什么ÿ…...

windows redis 自启动 Redis服务无法启动报错1067问题
如果你的系统服务里面已经有redis服务并且无法启动,则使用下面的命令卸载此服务 ! 1、停止Redis服务: redis-server --service-uninstall 2、删除系统服务 sc delete redis 进入到你的Redis安装目录,我的在以下目录,谨记此时不…...

Ubuntu Server CLI专业提示
基础 网络 获取所有接口的IP地址 networkctl status 显示主机的所有IP地址 hostname -I 启用/禁用接口 ip link set <interface> up ip link set <interface> down 显示路线 ip route 将使用哪条路线到达主机 ip route get <IP> 安全 显示已登录的用户 w…...

Centos7升级OpenSSH9.1
最近遇到了服务器漏洞,需要对服务器的OpenSSH版本进行升级,查阅了相关资料,总结出了一套比较简单的方案。中间遇到的个别问题也进行了记录,供大家参考。 下载准备 从https://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/opens…...

linux——信号
目录 一.信号的保存 二.信号集操作 1.信号集 2.信号集操作函数 3.sigprocmask 4.sigpending 三. 信号的捕捉 1.内核态和用户态 2. sigaction 四.可重入函数 五.SIGCHLD信号 一.信号的保存 实际执行信号的处理动作称为信号递达(Delivery)。信号从产生到递达之间的状…...

存档&改造【03】Apex-Fancy-Tree-Select花式树的导入及学习
Apex-Fancy-Tree-Select git学习网页 GitHub - RonnyWeiss/Apex-Fancy-Tree-Select: Fancy Tree Plug-in for Oracle APEX 如何从其他应用程序导出已有插件到新应用程序中 1.从其他应用程序导出插件 其他应用程序-【共享组件】-【插件】-【任务 导出插件】-选择想要导出的…...

【单片机】14-I2C通信之EEPROM
1.EEPROM概念 1.EEPROM 1.1 一些概念 (1)一些概念:ROM【只读存储器---硬盘】,RAM【随机访问存储器--内存】,PROM【可编程的ROM】,EPROM【可擦除ROM】,EEPROM【电可擦除ROM】 1.2 为什么需要EE…...

Mini-dashboard 和meilisearch配合使用
下载的meilisearch一般是development模式,内置客户端,修改客户端后需要重要全部编译,花时间太长了。前后端分离才是正道,客户端修改不用重新编译后端。 方法如下: 1、修改配置文件/etc/meilisearch.toml,…...

leetcode 886. 可能的二分法
给定一组 n 人(编号为 1, 2, …, n), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。 给定整数 n 和数组 dislikes ,其中 dislikes[i] [ai, bi] ,表示不允许将…...

Elasticsearch:使用 ELSER 文本扩展进行语义搜索
在今天的文章里,我来详细地介绍如何使用 ELSER 进行文本扩展驱动的语义搜索。 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考如下的链接来进行安装: 如何在 Linux,MacOS 及 Windows 上…...

OpenRadar DOA函数 Bartlett/CBF和Capon使用
Bartlett / CBF原理看这里 Capon原理看这里 这里只讲怎么调用openradar提供的aoa_bartlett和aoa_capon函数: 一些吐槽:虽然看起来openradar的作者代码水平很高,但里面有很多匪夷所思的写法,比如他demo里的解析文件格式就很迷啊等…...

二叉树--翻转二叉树
文章前言:如果有小白同学还是对于二叉树不太清楚,作者推荐:二叉树的初步认识_加瓦不加班的博客-CSDN博客 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 如果思路不清楚,请看动态页面&am…...

强化学习环境 - robogym - 学习 - 3
强化学习环境 - robogym - 学习 - 3 文章目录 强化学习环境 - robogym - 学习 - 3项目地址为什么选择 robogymObservation - 观测信息Action - 动作信息Initialization - 初始状态设置 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机…...

CUDA+cuDNN+TensorRT 配置避坑指南
深度学习模型加速部署的环境配置,需要在本地安装NVIDIA的一些工具链和软件包,这是一个些许繁琐的过程,而且一步错,步步错。笔者将会根据自己的经验来提供建议,减少踩坑几率。当然可以完全按照官方教程操作,…...

关于PointHeadBox类的理解
forward函数 def forward(self, batch_dict):"""Args:batch_dict:batch_size:point_features: (N1 N2 N3 ..., C) or (B, N, C)point_features_before_fusion: (N1 N2 N3 ..., C)point_coords: (N1 N2 N3 ..., 4) [bs_idx, x, y, z]point_labels (opti…...

javascript二维数组(10)ajax的使用
在JQuery中,使用AJAX的方法主要有以下几种: $.ajax():这是JQuery中最通用的AJAX请求方法。它需要一个包含各种参数的对象,其中包括请求的URL、请求方式、数据类型、请求参数等。请求成功后执行的回调函数也是通过参数来定义的。 …...

CMMI5认证哪些企业可以申请
CMMI5认证哪些企业可以申请 什么是CMMI5认证 CMMI(Capability Maturity Model Integration)是一种用于评估组织的软件工程能力的国际标准。CMMI模型包括5个等级,其中CMMI5是最高等级,代表组织具有达到持续优化和创新的能力。获得…...

【iptables 实战】9 docker网络原理分析
在开始本章阅读之前,需要提前了解以下的知识 阅读本节需要一些docker的基础知识,最好是在linux上安装好docker环境。提前掌握iptables的基础知识,前文参考【iptables 实战】 一、docker网络模型 docker网络模型如下图所示 说明࿱…...

【多级缓存】
文章目录 1. JVM进程缓存2. Lua语法3. 实现多级缓存3.1 反向代理流程3.2 OpenResty快速入门 4. 查询Tomcat4.1 发送http请求的API4.2 封装http工具4.3 基于ID负载均衡4.4 流程小结 5. Redis缓存查询5.1 实现Redis查询 6. Nginx本地缓存6.1 本地缓存API6.2 实现本地缓存查询 7. …...

第五课 树与图
文章目录 第五课 树与图lc94.二叉树的中序遍历--简单题目描述代码展示 lc589.N叉树的层序遍历--中等题目描述代码展示 lc297.二叉树的序列化和反序列化--困难题目描述代码展示 lc105.从前序与中序遍历序列构造二叉树--中等题目描述代码展示 lc106.从中序与后序遍历序列构造二叉…...

2023-10-07 事业-代号z-副业-CQ私服-调研与分析
摘要: CQ作为一款运营了20年的游戏, 流传出的私服可以说是层出不穷, 到了现在我其实对这款游戏的长线运营的前景很悲观. 但是作为商业的一部分, 对其做谨慎的分析还是很有必要的. 传奇调研的来源: 一. 各种售卖私服的网站 传奇服务端版本库-传奇手游源码「免费下载」传奇GM论…...

合并不同门店数据-上下合并
项目背景:线下超市分店,统计产品的销售数量和销售额,并用透视表计算求和 merge()函数可以根据链接键横向连接两张不同表,concat()函数可以上下合并和左右合并2种不同的合并方式。merge()函数只能横向连接两张表,而con…...

学习记忆——数学篇——案例——算术——整除特点
理解记忆法 对于数的整除特征大家都比较熟悉:比如4看后两位(因为100是4的倍数),8看后三位(因为1000是8的倍数),5末尾是0或5,3与9看各位数字和等等,今天重点研究一下3,9,…...

PHP8中的魔术方法-PHP8知识详解
在PHP 8中,魔术方法是一种特殊的方法,它们以两个下划线(__)开头。魔术方法允许您定义类的行为,例如创建对象、调用其他方法或访问和修改类的属性。以下是一些常见的魔术方法: __construct(): 类的构造函数…...

[图论]哈尔滨工业大学(哈工大 HIT)学习笔记23-31
视频来源:4.1.1 背景_哔哩哔哩_bilibili 目录 1. 哈密顿图 1.1. 背景 1.2. 哈氏图 2. 邻接矩阵/邻接表 3. 关联矩阵 3.1. 定义 4. 带权图 1. 哈密顿图 1.1. 背景 (1)以地球为建模,从一个大城市开始遍历其他大城市并且返回…...

Nginx+Keepalived实现服务高可用
Nginx 和 Keepalived 是常用于构建高可用性(High Availability)架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器,而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 下载Nginx 在服务器1和服务器2分别下载nginx …...

picodet onnx转其它芯片支持格式时遇到
文章目录 报错信息解决方法两模型精度对比 报错信息 报错信息为: Upsample(resize) Resize_0 not support attribute coordinate_transformation_mode:half_pixel. 解决方法 整个模型转换过程是:paddle 动态模型转成静态,再用paddle2onnx…...

【学习笔记】CF704B Ant Man
智商不够啊,咋想到贪心的😅 非常经典的贪心模型🤔 首先,从小到大将每个 i i i插入到排列中,用 D P DP DP记录还有多少个位置可以插入,可以通过钦定新插入的位置左右两边是否继续插入数来提前计算贡献。注…...

SQLines数据迁移工具
Data and Analytics Platform Migration - SQLines Tools SQLines提供的工具可以帮助您在不同的数据库平台之间传输数据、转换数据库模式(DDL)、视图、存储过程、包、用户定义函数(udf)、触发器、SQL查询和SQL脚本。 SQLines SQL Converter OverviewCommand LineConfigurati…...

pkl文件与打开(使用numpy和pickle)
文章目录 1. 什么是pkl文件2. 如何打开?Reference 1. 什么是pkl文件 1)python中有一种存储方式,可以存储为.pkl文件。 2)该存储方式,可以将python项目过程中用到的一些暂时变量、或者需要提取、暂存的字符串、列表、…...