Hibernate框架ORM的实现原理(资料)

Spring 加强版 ORM 框架 spring-data-jdbc 入门与实践 前言 Spring 为了支持以统一的方式访问不同类型的数据库,提供了一个 Spring Data 框架,这个框架根据不同的数据库访问技术划分了不同的模块。上篇 《Spring 加强版 ORM 框架 Spring Data 入门》 介绍了不同模块遵循的通用规范,这篇我们来介绍下基于 JDBC 技术实现的 spring-data-jdbc 模块。 一、入门 基本的概念这里就不多说了,如果你在本篇遇到不明白的地方可以移步上一篇文章查看相关内容。 Spring Boot 内置了对 spring-data-jdbc 阅读详情

1.什么是ORM
ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

2.什么是Hibernate
对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。

3.ORM的实现原理
现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类(*.java)、映射文件(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的作用如下。
⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。
⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接哪中数据库、登录用户名、登录密码以及连接字符串等。
在这三种主要的文件中,映射类为普通Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想理解“映射”首先我们需要知道如何解析这三种文件,即解析XML格式文件、解析Properties格式文件和解析Java类文件。

下面我们来分别探讨一下如何实现这些文件的解析。
⑴如何解析XML文件
前面我们说过映射文件是XML格式,数据库配置文件也可以是XML格式,因此如果能解析XML文件我们就可以获取这两个文件的信息。XML文件格式我简单做下介绍,比如<name sex=”male”>tom</name>这句就是一个XML格式的描述,name代表节点,节点必须有开始标记<name>和结束标记</name>,在开始标记中我们可以添加一些属性的声明比如sex。解析XML的技术可以分为两类那就是SAX和DOM,这两种方式的差别和优缺点大家可以上网查阅或者我们会在以后的文章中提出,请大家关注。实现解析XML文件的功能很方便,我们可以通过下载第三方的一些工具包如xml-apis.jar和xercesImpl.jar等,也可以使用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、Document、Element等等,大家可以通过API文挡查阅这些类的说明。通过这些类我们可以把XML文件的信息读入内存并通过类中的某些方法获取指定节点的名字、值、属性名、属性值这些信息。
⑵解析Properties文件
数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般采用“属性名=属性值”的形式描述信息。如果配置文件采用Properties文件描述,我们就需要想办法解析这种类型的文件了。想解析Properties文件大家就需要熟悉Properties这个类了,这个类有一些常用方法比如,load()加载指定文件并读取文件中的属性信息,PropertyNames()返回所有属性名,getProperty()返回指定属性名的属性值。通过解析Properties文件我们可以得到连接数据库必要的信息,然后通过底层JDBC技术与数据库建立连接。
⑶解析Java类文件
通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数据映射成为对象,首先需要把表中的记录取出,然后将每个字段值给映射类对象的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只知道类名和属性名,如何根据类名和属性名调用相应的set和get方法,是一个关键问题。在Java中有一种机制叫反射机制,使用这种机制我们可以得到类的信息,包括类只用的修饰符、方法、属性、继承的父类以及实现接口等信息。反射机制相关的类有Class、Field、Method以及Constructor等。通过Class的getFields()、getMethods()和getConstructors()方法得到相应的属性、方法和构造方法。通过Field类的getName()、getType()和getModifiers()方法得到相应的属性名、属性类型、属性修饰符信息。通过Method类getReturnType()可以获取方法的返回类型,invoke()方法可以根据给定的方法名和参数值执行对象中对应的方法。我们可以首先通过以上方法获取类中的属性名,然后拼写成setXXX和getXXX方法名,最后根据方法名执行对应的方法,将数据库数据加载到对象中。
此外要实现Hibernate机制还会涉及到一个技术点,那就是如何获取数据库的相关信息。要实现这个功能,就需要大家了解JDBC的DataBaseMetaData类和ResultSetMetaData类,通过这两个类的方法我们就可以获取数据库表的字段名、类型、大小等相关信息。
在这里我只是给大家把实现ORM功能的一些关键技术提了出来,通过上面介绍大家对ORM机制应该有个大概了解,比如通过解析数据库配置文件获取数据库连接信息并建立连接,通过解析映射文件可以获取映射类名、属性名、表名以及字段名等信息,得到名字后通过反射机制可以得到映射类信息,调用构造方法创建对象,调用每个属性的set方法给对象设值完成数据的装载。Hibernate就是采用这个过程来实现ORM的,当然Hibernate还使用了事务控制、缓存控制等很多技术

跟老杜手撕Spring6教程(二)Spring八大模块及特点详解 Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。Spring在它的AOP模块中提供了对面向切面编程的丰富支持,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。 阅读详情

相关推荐

ORM框架

ORM框架是一种将对象模型与数据库关系模型之间进行映射的技术,它通过框架自动处理数据的持久化,使得开发者不需要编写大量的SQL语句,减少了繁琐的数据库操作代码。ORM框架的核心思想是将数据库表中的数据映射到应用程序中的对象,通过这些对象进行数据库操作,简化了开发过程。Hibernate:最经典的Java ORM框架,功能强大,支持多种数据库。:Java EE中的标准ORM规范,许多ORM框架(如Hibernate)都实现了JPA规范。MyBatis。

ysct_999的博客 4637

Spring之ORM

ORM: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。 这种方案存在以下不足: 1.持久化层缺...

晓宇博客 9190

Spring 核心技术解析【纯干货版】- X:Spring 数据访问模块 Spring-Orm 模块精讲

Spring-ORM 模块,是一个致力于整合对象关系映射(ORM)技术的模块,特别 适用于与 Hibernate、JPA(Java Persistence API)等流行 的ORM 框架的集成。Spring-ORM 模块提供了 SessionFactory 的配置、事务管理以及对实体类的生命周期管理等功能,使得在 Spring 应用中使用 ORM 工具变得更加简单和高效。通过 Spring-ORM,可以利用 Spring 的事务管理能力的同时享受 ORM 框架带来的对象关系映射便利。

栗筝i的博客 1722

hibernate之ORM实现原理

ORM的实现原理现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么

syc1110的专栏 1591

SAP S/4HANA 物料分类账(ML)/实际成本核算(Actual Costing)——底表全景 & CKMLCP 执行后数据变化

插入 ML 重估凭证行项目:Dr/Cr 库存科目(期末库存调整)、Dr/Cr COGS/消耗科目(消耗重估)、Cr/Dr ML 重估抵消科目(PRY/PRV 类逻辑)also STPRS/VERPR/PEINH/LBKUM 等(但 S/4 很多“真理”在 ACDOCA)MLPP / MLPPF / MLCR / MLCRF / MLCD / CKMLMV003/004 等。Material Ledger Document(行项目明细:收货/发票价差/结算写入/重估相关)间接(PUP在CKMLCR;

weixin_52203666的博客 588

2.1 量子精密测量:SERF原子陀螺仪中的核自旋-电子自旋强耦合机制

本文深入解析了SERF原子陀螺仪中核自旋-电子自旋强耦合机制的核心原理与应用。通过量子精密测量技术,SERF陀螺仪实现了超高精度的惯性导航,其独特的磁场自补偿和拉莫尔进动特性使其在弱磁场环境下表现出色。文章还探讨了关键技术突破和前沿进展,展示了量子精密测量在惯性导航领域的巨大潜力。

kotlin6android的博客 212

SpringData JPA

文章目录 1、常见的ORM框架。 2、SpringData JPA概述。 3、SpringData JPA的特性。 4、SpringData JPA的快速入门。 (1)需求说明 (2)开发环境 (3)整合SpringData JPA与spring。 (4)使用JPA注解配置映射关系。 (5)完成CRUD操作。 5、SpringData JPA的内部原理剖析。 6、SpringData JPA的查询方式。 7、Specifications动态查询。 8、多表设计。 9、JPA中的一对多。 10、JPA中的多

xiaoxiaoxiang1的博客 128

FLUENT UDF编译及蒸发冷凝相关问题

蒸发冷凝与相间传质

weixin_48029137的博客 1万+

Hibernate框架ORM的实现原理

Hibernate框架ORM的实现原理2007-08-24 来自:梁建全  [收藏到我的网摘]梁建全: 东方标准国际软件专业讲师,曾经负责过的重大的大型项目包括:全军武器装备质量管理系统、全军办公自动化系统、日本NTT电信管理系统等。主要著作包括《ASP.NET开发答疑200问》《ASP.NET开发实例导航》等。毕业于北京大学计算机专业。1. 什么是ORM ORM的全称是Obj

dongliheng的专栏 5131

ResNet改进(7):添加 SK注意力机制

实现 SK 注意力机制。

2401_82355416的博客 732

YOLOv13改进策略【Neck】| CVPR2024 LGAG:大核分组注意力门模块,3×3分组卷积与注意力协同的特征精准融合

本文记录的是利用LGAG 模块改进 YOLOv13 的颈部融合部分。(Large-kernel Grouped Attention Gate)通过3×3分组卷积与注意力机制结合,引导解码器处理特征与跳接特征的精准融合。本文利用模块,通过3×3分组卷积扩大感受野以捕捉更广泛局部空间上下文,同时结合注意力机制生成自适应注意力系数,对YOLOv13中关键目标特征赋予高激活值、抑制冗余背景特征,在特征融合阶段实现全局语义与局部细节的高效结合,减少计算成本的同时提升特征表达能力,增强模型对复杂场景下目标的检测精度与效

Limiiiing的博客 106

Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以

李阿昀的博客 12万+

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

ORM思想及Hibernate和Mybatis框架实现原理

1、ORM思想(Object Relational Mapping) 目前,通过Java语言连接并操作数据库的技术或方式已经有很多了,例如:JDBC,Hibernate,MyBatis,TopLink等等。其中JDBC是Java原生的API,支持连接并操作各种关系型数据库。相信每个程序员都是从JDBC开始学起的,然后才接触到各种持久层框架。 JDBC作为Java原生API,有优点,也有缺点,这...

zengdongwen的博客 2080

【MuJoCo】第一章 仿真环境的搭建与入门

它通过优化的接触动力学算法,能够高效处理复杂的多体交互,这使其成为从机械臂操控到足式机器人运动,再到大规模强化学习训练的理想选择。特别是与 JAX 集成的 MJX 的推出,将高性能仿真的边界推向了新的高度,使得在单台机器上并行数千个仿真环境成为可能。我们将通过编写您的第一个仿真程序,逐步拆解 MuJoCo 的工作流,让您亲手感受物理引擎的脉动。这种加速能力对于需要海量仿真样本的强化学习算法(如 PPO)是颠覆性的,它将原本需要数小时的训练缩短到几分钟。上的几何形状,用于碰撞检测和可视化。

u012133341的博客 370

第0章 《机器人工程师带你入门SLAM》专栏所有文章目录汇总(截止目前115篇文章),方便大家查看阅读

《机器人工程师带你入门SLAM》专栏文章汇总:优快云热销专栏已更新100+篇优质内容,涵盖SLAM技术全栈知识体系。文章分为三大类:1)基础工具与环境配置,包括Ubuntu、Git等必备技能;2)C++编程从入门到进阶,详解变量、类、模板等核心概念;3)SLAM核心库实战,深入解析ROS、Eigen、PCL等关键库的应用。专栏提供从计算机基础到项目实战的系统学习路径,并附代码实例。点击专栏主页可订阅查看全部内容,后续将保持更新。

行知SLAM 1072

ORM框架原理与应用——实现ORM框架入门实例

ORM框架原理与应用 第一次作业 实现ORM框架入门实例 文章目录ORM框架原理与应用前言一、ORM框架是什么?二、Hibernate是什么?三、使用步骤1.创建项目2.创建数据库3.添加Hibernate配置文件4.添加实体类及其配置文件4.使用Hibernate实现用户添加总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考

weixin_44955134的博客 3145

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ORM 思想及相关框架(Hibernate以及MyBatis)实现原理

该课程要求程序员必须已经基本掌握 xml 解析,反射,JDBC,Hibernate,MyBatis,Maven 等相关技术 课程大纲 ORM 思想 ORM 的经典应用:Hibernate 案例及实现原理ORM 的经典应用:MyBatis 案例及实现原理 自定义一个 ORM 框架:MiniORM 一.ORM 思想 目前,通过 Java 语言连接并操作数据库的技术或方式已经有很多了,例如:J...

kai46385076的专栏 1161

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java的ORM框架:JPA、Hibernate、MyBatis等的使用及原理

JPA、Hibernate和MyBatis都是Java中常用的ORM框架,它们各自具有独特的使用方式和原理。JPA是ORM框架的规范,提供了标准的接口和元数据形式;Hibernate是一个实现了JPA规范的ORM框架,提供了完整的CRUD操作和事务管理等功能;MyBatis则是一个不完全的ORM框架,提供了高度的灵活性,允许开发人员编写自定义的SQL语句。在选择ORM框架时,需要根据具体的需求和场景进行权衡。

牛马日常踩坑记录 1334
上一篇: Myeclipse新建jsp文件时默认代码
下一篇: java Map 遍历速度最优解
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值