如何理解Hibernate的持久化?

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

学习Hibernate,必须要理解什么是持久化?结合了一下网上的各位大佬的观点和自己的理解:

持久化概念

持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。

而Hibernate是对JDBC的轻量级封装,其持久化就是一个把数据存储到数据库的过程,也就是说,可以将Hibernate的持久化通俗地理解为:把内存中的对象保存到数据库里去,需要的时候再从数据库里拿出来。(即把缓存中的东西放到数据库中使之可以持久存在。)

 

3种状态

实体类对象在Hibernate中有3种状态,分别是:瞬时状态、持久状态和脱管状态。

  • 瞬时 :指的是没有和hibernate发生任何关系,在数据库中也没有对应的记录,一旦JVM结束,这个对象也就消失了。 
  • 持久 :指得是一个对象和hibernate发生联系,有对应的session,并且在数据库中有对应的一条记录 。
  • 脱管 :指的是一个对象虽然在数据库中有对应的一条记录,但是它所对应的session已经关闭了。

 

持久化对象的特征

持久化的对象具有以下特征:

  • 存在于一个session事例的缓存中(可理解为:持久化对象总是被一个session事例关联)。
  • 持久化对象在数据库中有相关记录与之对应。
  • Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库。
  • 瞬时状态——>持久化状态:Session的save()方法。
  • 脱管状态——>持久化状态:Session的update() ,saveOrUpdate(),lock()方法。
4、深入理解Hibernate持久化生命周期 本文深入探讨了Hibernate持久化生命周期的核心概念,包括瞬态、持久化和分离状态的管理,以及实体关联、保存、更新、删除等操作的实现方式。同时,详细介绍了级联操作、延迟加载、代理和集合包装的应用场景,并结合Criteria API、HQL及原生SQL查询等方式,帮助开发者灵活高效地管理持久化对象。 阅读详情

相关推荐

13 万字 C 语言从入门到精通保姆级教程2021 年版

13 万字C语言保姆级教程,从入门到精通。

李南江 61万+

hibernate源码分析 -- 持久化原理

hibernate持久化机制是采用session容器的方式来缓存数据,当进行save或者update对象时,Hibernate并未将这个对象实际的写入数据库中,而仅仅是在session缓存中根据应用的行为做了登记,在真正需要将缓存中的数据flush入数据库时才执行先前登记的所有行为。 这里执行就包括hibernate提出的二个概念VO,PO VO(Value Object)是独立的Java ...

netliving的专栏 241

微信小程序 - 解决微信支付报错 requestPayment:fail no permission 原因分析及排查处理(支付失败出错,无法唤起支付弹框面板,微信支付API报错请求付款:失败无权限)

微信小程序,微信支付,支付报错,errMsg: "requestPayment:fail no permission",支付失败,支付权限没问题,微信小程序支付报错,检查了appid正确依旧不行,微信小程序支付异常,苹果ios手机,安卓手机,开发者工具模拟器,最新解决教程,小程序wx.requestPayment报错/无响应,小程序支付 requestPaym,微信小程序认证,真机运行,小程序微信支付提示错误,微信小程序里使用微信支付错误提示,微信小程序支付异常,微信支付弹框拉不起来,小程序支付api,都检

🏆 前端领域优质创作者 1万+

Hibernate持久化类的三种状态

持久化类的三种状态 Hibernate是持久层框架,通过持久化类完成ORM操作。 为了更好的管理持久类,将持久类分为三种状态: 瞬时态,持久态,托管态。 1、瞬时态(transient) 瞬时态也被称为临时态或者自由态,瞬时态的实现是由new命令创建,开辟内存空间的对象。不存在持久标识OID(相当于主键),尚未与Hibernate Session关联,在数据库中也没有记录,失去引用后将被JVM回收。 瞬时态的对象在内存中是孤立存在的,与数据库中的数据无任何关联,仅是一个信息携带的载体。 瞬时态对象:不存在

pipizhen_的博客 544

Hibernate持久化

一、主键生成策略   1)主键分类:1.自然主键:主键本身就是表中的某一个字段,实体中的一个具体属性,对象本身唯一的特性。           例如:创建一个学生,把其身份证号设为主键          2.代理主键:本身不是表中的一个必须的字段,           例如:创建一个学生,设置sid为主键。            实际开发中,尽量使用代理主键。   2)主键生...

diaozeqi6995的博客 362

Hibernate实现原理

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

yincheng_917的博客 5487

Hibernate持久层(原理、基本流程)

Hibernate持久层 Java中对象的持久化有3种方式: (1)序列化对象,存到格式化的文本中; (2)将对象持久化到XML文档中; (3)持久到数据库中,一般指关系型数据库。   以前:表示层 + 业务逻辑层 + 数据库层   其中业务逻辑层:除了负责业务逻辑意外,还要负责相关的数据库操作(增删改查)   为了使业务逻辑层的开发人员能真正专注于业务逻辑的开发,不纠缠与底层

搬家啦x 4686

Hibernate持久化类的理解

Hibernate持久化类的理解对于映射(mapping),有两套API,一个是Hibernate Session,另一个是Java Persistence EntityManager。后者是Java持久化的标准,因此,允许改变持久化实现而不会出现问题,很多实现都是参考了这个标准的。这里讲的是Hibernate Session。

CupOnDesk的博客 868

Hibernate之深入理解持久化对象

持久化是将程序数据在持久化状态和瞬时状态间转换的机制,持久化类可以被hibernate保存到数据库并且从数据库中读取的类。简而言之,一个对象一旦被持久化了,那么这个对象的某个属性一旦改变了,数据库中的属性也会随之改变,所以这样就可以让程序员做到采用完全面向对象的方式来操作数据库了,而无需管理数据库的一些操作。 不过一个类要持久化,也是要有一些要求的: (1)提供一个无参数的构造函数:Hiber...

qq_40133908的博客 309

初识Hibernate理解持久化

上一篇文章我们简单介绍了Hibernate相关的一些最基本的文件及其作用,并在最后完整的搭建了Hibernate的运行环境,成功的完成了与数据库的映射。但是至于其中的一些更加细节的地方并没有很详尽的解释,本篇则主要介绍Hibernate中的一个关键元素,持久化类。主要涉及以下一些内容: 定义用作持久化类的基本要求 持久化对象的几种不同状态及其相互之间的转换 使用Hibernate完成对数据库的cru

Walker_YAM 393

hibernate 深入理解持久化对象

hibernate 完全采用面向对象的方式来操作数据库,因此开发者眼里只有对象、属性,无须理会数据库、表、列等概念。持久化类的要求Hibernate 采用低侵入式设计,所以对持久化类的要求也是只要是简单的pojo即可。虽然hibernate持久化没什么要求,但应遵守如下规则: -提供一个无参的构造器,这样hibernate就可以使用Constructor.newInstance()来创建持久化

TO TOP CODER 1462

如何理解hibernate持久化

 持久化顾名思义就是把缓存中的东西放到数据库中使之持久.对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态. 临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象. 持久化状态:已经被持久化,加入到session的缓存中.处于持久化java对象被称为持久化对象. 游离状态:已经被持久化,但不处于ses

quxiuer 1086

Hibernate持久化理解

所谓的持久是站在业务模型的角度说的。按照面向对象的分析设计方式,我们先根据业务的形状画出一个对象模型,然后写代码,然后对象之间互相调用,系统就运行起来了。面向对象很牛b,但是有一个巨大的问题,就是所有的对象都是在计算机的内存里的,一旦机器关掉,一切都消失了。于是需要有这样的功能:把内存中的对象保存到数据库里去,需要的时候再从数据库里拿出来。 最简单的方式就是:在对象里面写上sql语句,把

nixianzai的专栏 143

深入理解Hibernate持久化3种状态

学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象。但是大家又是否对hibernate的ses

jayxu无捷之径的博客 2282

Rhyme/ Hibernate4 持久化与ORM的理解以及Hibernate4优缺点

Hibernate4 持久化与ORM的理解以及Hibernate4优缺点1、持久化a、狭义的概念将数据保存在物理介质中长期保存b、广义的概念对数据的crud操作都叫持久化c、加载加载是hibernate中特有的概念,表示将数据从数据库库加载到session中2、ORM的理解首先ORM是Object Relation Mapping 的缩写通过上图我们可以理解到ORM架构的作用就是解决对象与关系型数据

RhymeChiang 623

深入理解Hibernate:如何使用Hibernate ORM框架实现数据持久化

在本文中,我们将深入探讨Hibernate ORM框架的使用,包括如何配置Hibernate、如何使用Hibernate实现数据持久化、如何使用Hibernate查询数据等。在本文中,我们深入探讨了Hibernate ORM框架的使用,包括如何配置Hibernate、如何使用Hibernate实现数据持久化、如何使用Hibernate查询数据等。在使用Hibernate之前,我们需要配置Hibernate。在配置好Hibernate之后,我们可以使用Hibernate实现数据持久化

m0_49151953的博客 282

Hibernate框架学习之二:深入理解持久化对象

前言由于Hibernate框架是一个完全的ORM框架,所以在Hibernate开发中只涉及具体的对象与属性,所以对象在Hibernate中是很重要的方面。而持久化对象则与数据库中的记录息息相关了,可以简单把持久化理解为普通的JavaBean,也被称为POJO(Plain Old Java Object),在Hibernate3中,持久化类的定义与普通JavaBean的定义基本一致,而不需要额外

rhwayfun专栏 987

Hibernate开发】对持久化对象和缓存机制的理解

一.首先来理清几个有关对象持久化的概念:        “暂时”数据,比如在电脑内存中的数据就是暂时数据,当电脑关机后,数据就消失了;“持久”数据,就像电脑硬盘上的数据,即使关机了,它还是存在。持久化的概念就是将数据从"临时"状态转换为"持久"状态,最常用的方式是使用文件来存储持久化数据。        “对象持久化”和“数据持久化”:数据持久化是对象持久化的基础,对象持久化的主要操作

yi3040的专栏 1065
上一篇: 关于Hibernate基于version的乐观锁
下一篇: 关于Hibernate的部分知识总结
Magus-QiYan
博客等级 码龄10年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值