解析Hibernate中的持久化—ORM

Hibernate旅程(一)Hibernate架构概述 Hibernate引出 曾学过三层架构,三层分别为界面层、业务逻辑层、数据持久层。在javaweb中,界面层和业务逻辑层可以使用struts框架来封装一些常用的操作。而在我们的数据持久层中,对数据库的增删改查,我们经常要手动的控制事务,各种sql语句查询,各种参数传递,无论是对哪个表操作使用的均是同一种思路进行操作的。既然是同一种思路,那就是重复的东西了。而且我们还要和关系型数据库打交道,而不单 阅读详情

           最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的,在提出持久层之前,业务逻辑层在实现业务逻辑的同时,还需要访问数据库,这样就为业务逻辑的扩展怎家了难度,有了持久层,业务逻辑层只需要负责业务逻辑的实现,对数据的交给持久层,使每一段业务逻辑代码的目的都更明确,这样操作就更简单了。

       如下图:增加了持久层的MVC分层结构

    

       Hibernate作为一个中间件,很好的实现了持久层的功能,其中就是使用了ORM(对象到关系的映射),Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

      

      何谓“持久化”持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化顾名思义就是把缓存中的东西放到数据库中使之持久

       对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.

       临时状态(Transient):刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.

       持久化状态(Persistent):已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.

       游离状态(Detached):已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.

持久化对象的特征:

       .  位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联

       .  持久化对象和数据库中的相关记录对应

       .  Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库

       .  Session的save()方法把临时状态变为持久化状态.

       .  Session的update() ,saveOrUpdate()和lock()方法使游离状态变为持久化状态.

       ORM模式

       ORM是实现持久化的技术之一,ORM—Object-Relational Mapping对象到关系的映射,通过使用描述对象和数据库之间的元数据,将Java程序中的对象自动持久化到关系数据库中。

       对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据库无法直接表达多对多关联和继承关系。因此,ORM一般以中间件的形式存在,主要实现程序对象到关系数据库的映射,ORM中间件能在任何一个Java程序的业务逻辑层和数据库层之间充当桥梁。

       ORM的优点:

       1.提高了开发效率。由于ORM可以自动对实体对象与数据库中的表进行字段与属性的映射,所以实际操作中已经不再需要一个专用的、庞大的数据访问层。

       2.ORM提供了对数据库的映射能够像操作对象一样从数据库中获取数据,而不用直接进行SQL编码。

       ORM的缺点:

       系统结构方面,采用ORM的系统一般都是多层系统,层次多了效率就会降低。

       2.性能方面,主要体现在对持久化对象的提取和对数据的加工处理上,采用ORM时,系统可能将全部数据提取到内存对象中,然后进行过滤和加工处理,这样会产生性能的问题。

       3.对象持久化方面,ORM一般会持久化所有的属性,这对有些应用是不希望发生的。

       常用的ORM中间件有Hibernate、IBatis、Apache OJB 等等

以上的持久化技术是Hibernate实现ORM模式,还有其他的实现持久化模式

        1.JDBC直接访问数据库

         JDBC(Java DataBase Connectivity standard)是面向对象的应用程序接口,统一规定了关系数据库的标准接口,为各个数据库厂商提供标准接口,实现了数据库访问的方式是在业务方法中直接嵌入SQL语句,SQL语句是面向关系的,依赖于关系模型,所以JDBC方式有点是简单直接,特别是对于小型应用程序。

       2.主动域对象模式

       主动域对象是实体域对象的一种形式,封装了关系数据模型和数据访问的细节,也就是在J2EE架构中,EJB组件中的实体EJB---EJB本身管理持久化。这样在实体域中封装了数据访问细节,并采用了通过过程域对象负责业务逻辑操作,程序结构更加清晰、易读,提高了程序的灵活性。

        3.CMP模式

       CMP模式(Container—Managed Persistent)即容器管理持久化,表示EJB容器封装了对象和关系的映射以及数据访问细节来管理试题EJB的持久化。

       CMP和ORM相似之处在于,两者都是提供对象-关系映射服务,都把对象持久化的任务从业务逻辑中分离出来,区别在于CMP负责持久化实体EJB组件,而ORM负责持久化基于JavaBean形式的实体域对象。

       4.JDO模式

       JDO(java Data Object)是Java对象持久化的新规范,是SUN公司制定的描述对象持久化含义的标准API,严格来说,JDO不是对象-关系映射接口,因为它支持把对象持久化到任意一种存储系统中,包括关系数据库、面向对象数据库、基于XML的数据库。

Java必知必会系列:持久化与ORM框架 作者:禅与计算机程序设计艺术 1.背景介绍 相对于其他计算机编程语言来说,Java作为静态面向对象编程语言,具有简单、安全、可靠等特点,广泛应用于企业级开发、移动端开发、服务器端开发、互联网开发等领域。但是在后端开发中,由于数据库操作繁多复杂性较高,导致程序编写效率低下,容易出现各种各样的问题。因此 阅读详情

相关推荐

Hibernate ORM 4.3.8 英文API文档及开发指南

本文还有配套的精品资源,点击获取 简介:Hibernate ORM框架4.3.8版本英文API文档为Java开发者提供了操作数据库的对象关系映射解决方案。文档详细说明了API接口,涵盖了数据库交互、配置、最佳实践和示例代码。Hibernate的核心概念包括ORM、Session、Entity、Criteria API、SessionFactory、Transactions和...

weixin_42594419的博客 874

**Hibernate ORM 5.4.15.Final** 于 **2020年4月30日** 由 Gail Badner 发布

- **5.4.x 系列** 是 Hibernate ORM 的长期支持(LTS)版本之一 - 该版本与 **Hibernate Commons Annotations 5.1.0.Final** 配合使用 - 在 Spring Boot 2.2.x/2.3.x 时代被广泛使用

[Blog][Domain] programb.blog.youkuaiyun.com 566

基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文)

本设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。

u012759563的博客 7705

JAIN SLEE 中Container Managed Persistent (CMP)

Container(容器):是指运行应用程序的环境,它可以是一个应用服务器,如 JBoss、WebLogic 等,它负责管理应用程序的生命周期、资源和组件的交互。Managed(管理):容器会自动管理应用程序的一些特定资源,比如存储和恢复对象状态。Persistent(持久化):是指将数据保存到某种存储介质上(通常是数据库),即使应用程序停止或崩溃,数据也不会丢失。首先,你需要在 SBB 中定义需要持久化的状态字段。通常,这些字段通过abstract方法定义,并且容器将负责管理它们的存取操作。

pumpkin84514的博客 1355

Ferromagnetic soft continuum robots

本文来自机器人领域顶刊,Science Robotics。介绍了一种铁磁软连续体机器人,主要贡献为1)介绍了一个基于磁性微粒和聚合物的软连续体机器人的制造方法,在机器人外表面涂了一层水凝胶,极大地降低了摩擦阻力;2)并研究了在磁场下,不同粒子体积分数下,此机器人的驱动性能;利用手动操控的磁铁,进行了许多实验证明该机器人性能的优异性。 铁磁软连续体机器人 Ferromagnetic soft continuum robots [1] Paper Link Authors: Kim, Yoonho, et al

XU Yangxin的博客 1374

C语言——预处理指令

return 0;这里是可以编译通过的,运行结果也是对的:;;return 0;这里编译器会报错:这里是有语法错误的。在C语言中,#include是一个预处理指令,用于将一个源文件的内容插入到另一个源文件中。这通常用于包含标准库或自定义库的头文件,以便在程序中使用这些库中定义的函数、类型和宏。#include或:用于包含标准库头文件。查找策略是,编译器会在标准库头文件目录中查找这些文件。:用于包含用户自定义的头文件。

Stewie Lee的博客 3189

ORM 与 数据持久化

一,什么是ORM 对象关系映射(Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),用于在关系型数据库和业务实体对象之间作一个映射。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。说白了就是把关系型数据库封装成业务实体对象,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操...

weixin_30412013的博客 309

电工识图入门:从电气符号到控制逻辑的完整指南

电工图纸是电气工程领域的通用语言,无论是设备安装、线路检修还是系统设计,看不懂图纸就像航海没有海图。很多初学者面对复杂的电气符号和线路走向感到无从下手,实际上只要掌握正确的识图方法,就能从简单的照明电路逐步过渡到复杂的自动化控制系统。 本文将从最基础的电气符号和图纸类型讲起,通过实际图纸案例解析,带你建立完整的识图逻辑。你将学会如何区分主回路和控制回路,如何追踪电流路径,以及如何结合图纸进行故障排查。无论你是电工新手、设备维护人员还是相关专业学生,这套方法都能帮你快速提升图纸理解能力。 1. 电气图纸基础:

chengyixian7877的博客 337

解析Hibernate中的持久化—ORM(转载)

最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的,在提出持久层之前,业务逻辑层在实现业务逻辑的同时,还需要访问数据库,这样就为业务逻辑的扩展怎家了难度,有了持久层,业务逻辑层只需要负责业务逻辑的实现,对数据的交给持久层,使每一段业务逻辑代码的目的都...

weixin_42107384的博客 147

基于Simulink的六旋翼无人机动力分配仿真建模示例

六旋翼无人机概述特点:高冗余度、增强的负载能力和更好的故障容忍性。关键组件电机与螺旋桨:提供升力和推力。电调(ESC):控制电机转速。IMU(惯性测量单元):包括加速度计和陀螺仪,用于姿态估计。飞控板:处理传感器数据并生成控制信号。应用场景:航拍摄影、农业监测、物流配送等。仿真目标搭建一个简化的六旋翼无人机动力分配模型,涵盖电机驱动、姿态控制及位置控制过程。分析不同条件下的性能指标(如响应时间、稳定性等),并探讨六旋翼无人机的设计优化。

xiaoheshang_123的博客 485

Unity如何实现3D物体拆解组装

最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍现,也很有必要写篇博客来记录一下。首先,我们先来看下我们要实现的效果,就是对一个发动机(任意多组件物体,如:车)的360°预览查看,手动拖拽拆解,手动拖拽组装。360°旋转视角远近拉伸视角点击拖拽拆卸拖拽组装。

TxNet 1万+

Hibernate实现原理

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

qq_40285302的博客 630

电池模拟器【 电化学模型深度解析:PNGV模型原理与应用(专业科普版)】

1. 模型起源PNGV(Partnership for a New Generation of Vehicles)模型诞生于1993年美国“新一代汽车合作计划”,旨在提升混合动力汽车电池系统的建模精度。该模型最初针对铅酸电池设计,后经改进广泛用于锂离子电池、镍氢电池等动态特性仿真。2. 模型定位PNGV属于**等效电路模型(ECM)**的进阶版本,介于简单Rint模型与复杂电化学模型(如P2D模型)之间,兼顾计算效率与精度,是BMS(电池管理系统)中SOC/SOH估算的主流选择。PNGV模型凭借。

优快云-新能源汽车研发测试专业博主 1700

springdataJPA_JPA_orm_hibernate

1.ORM概述 ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射 简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。 2.为什么使...

CaculateByte的博客 554

在 NVIDIA DGX Spark 上运行 vLLM + Open WebUI

DGX Spark 和 GX10 都是性能强大的机器,但只有将它们视为交互式工作站而非精简版服务器,才能真正发挥它们的优势。合理利用共享资源,规划并发工作负载,并谨慎控制内存限制。做到这些,vLLM 与 Open WebUI 的结合就能成为可靠​​的日常工具,而不是脆弱的实验品。DGX平台本身价格不菲,但这并非体验此类硬件的唯一途径。多家厂商提供基于相同核心架构、价格更为亲民的系统,这些系统通常配备容量较小的固态硬盘或配置更为简化,但基本性能并未改变。

iCloudEnd的博客 1751

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hibernate sqlserver 对象名无效_ORM框架Hibernate基础探秘

《“爱读书”--给你讲技术》,我来看书,你来进步,让我们开始吧!本书简介书名为《轻量级JavaEE企业应用实战》,是本人在学习JavaEE框架的时候阅读的第一本书,本书对于框架及相关基础知识讲述的比较详细和浅显,适合初学者和需要全面了解JavaEE知识的人群。本文内容为本书第五章ORM和Hibernate1.对象关系数据库映射ORM的全称是Object/Relation Mapping,对象/关系...

weixin_39912250的博客 181

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【JavaEE学习笔记】Hibernate_04_ORM,Hibernate,主键策略,uuid

Hibernate_04 A.模式,层 1.模式与框架 a.模式 是专家总结出来,在某种情况下,解决某类问题的最佳解决方案 是思想、知识 b.框架 是一种半成品软件,供开发者进行制定,达到简化开发 是工具 2.四层架构 表现层:Struts2    SpringMVC 业务层:Spring 持久层:Hibernate  mybat

love__nana 336

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2020 Hibernate之核心接口 【整理】

文章目录1、持久化和ORM2、 Hibernate 核心接口框图2.1 Configuration类2.2 SessionFactory接口2.3 Session接口 1、持久化和ORM 持久化是指把数据(内存中的对象)保存到可持久保存的存储设备中(如硬盘),主要应用于将内存中的数据存储到关系型数据库中,在三层结构中,持久层专注于实现系统的逻辑层面,将数据使用者与数据实体进行关联。 ORM简称对象...

超逸の学习技术博客 1345

Hibernate学习-概述-第1天

  Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在Servlet/JSP 的 Web 应用中使用。 一、什么是 对象持久化 所谓持久化(Persistence),即...

chegy218的博客 220

一篇文章入门Hibernate框架

什么是Hibernate? 一个框架 一个Java领域的持久化框架 一个ORM框架 什么叫持久化操作? 和数据库相关的各种操作、对象的增删改查。 什么是ORM:对象/关系映射 ORM思想:将关系数据块中表中的记录映射成为对象,以对象的形式展现,程序员可以将数据库的操作转换为对对象的操作。 ORM采用元数据来描述对象,关系映射细节,原数据采用XML格式,并且存放在专门的对象-关系映射文字中。 ORM...

ECHO的博客 687

Java对象持久化技术概述

 Java对象持久化技术概述Hibernate从不同的角度的不同解释:它是连接Java应用程序和关系数据库的中间件它对JDBC API进行了封装,负责Java对象的持久化在分层的软件架构中,它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射1、应用程序的分层体系结构三层结

hbrqlpf的专栏 5950

Hibernate学习笔记(一)

一、什么是Hibernate? ①一个框架 ②一个Java领域的持久化框架 ③一个ORM框架 二、对象的持久化 ①狭义的理解,“持久化”仅仅指把对象永久的保存到数据库中 ②广义的理解,“持久化”包括和数据库相关的各种操作: ---保存:把对象永久保存到数据库。 ---更新:更新数据库中对象(记录)的状态。 ---删除:从数据库删除一个对象。 ---查询:根据特定的查询条件,把符...

weixin_44977914的博客 156

Hibernate学习笔记(持久化类、主键、缓存、事务、常用API)

Hibernate概述:         Hibernate是一个持久层的ORM的映射框架   ORM(Object Relational Mapping):         对象关系映射,将Java中一个对象与数据库中表建立映射关系,从而操作对象就可以操作表   Hibernate优点:            •  简化JDBC的开发            •  性能很好   ...

Au 487
上一篇: Struts中DispatchAction解析
下一篇: 解析Hibernate的结构
Magina-Dota
博客等级 码龄16年 109粉丝 64原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值