在hibernate中java对象有哪些状态

网上有关“在hibernate中java对象有哪些状态”话题很是火热,小编也是针对在hibernate中java对象有哪些状态寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

瞬时状态(Transient)

通过new创建对象后,对象并没有立刻持久化,它并未与数据库中的数据有任何关联,此时Java对象的状态为瞬时状态。

Session对于瞬时状态的Java对象是一无所知的,当对象不再被其他对象引用时,它的所有数据也就丢失了,对象将会被Java虚拟机按照垃圾回收机制处理。

持久状态(Persistent)

当对象与Session关联,被Session管理时,它就处于持久状态。处于持久状态的对象拥有数据库标识(数据库中的主键值)。

那么,对象是什么时候与Session发生关联的呢?有两种方法:

第一种,通过Sesison的查询接口,或者get()方法,或者load()方法从数据库中加载对象的时候,加载的对象是与数据库表中的一条记录关联的,此时对象与加载它的Session发生关联;

第二种,瞬时状态的对象,通过Session的save()方法或SaveOrUpdate()方法时,Java对象也与Session发生关联。

对于处于持久状态的对象,Session会持续跟踪和管理它们,如果对象的内部状态发生了任何变更,Hibernate会选择合适的时机(如事务提交时)将变更固化到数据库中。

游离状态

处于持久状态的对象,脱离与其关联的nSession的管理后,对象就处于游离状态。

处于游离状态的对象,Session无法保证对象所包含的数据与数据库中的记录一直,因为Hibernate已经无法感知对该对象的任何操作。

Session提供了两个方法(update()、merge()),将处于游离状态的对象,与一个新的Session发生关联。

此时,对象的状态就从游离状态重新转换为持久状态。

2.三种状态之间的转换:

使用new关键字构件对象,该对象的状态是瞬时状态。

1 .瞬时状态转为持久状态

使用Session对象的save()或saveOrUpdate()方法保存对象后,该对象的状态由瞬时状态转换为持久状态。

使用Session对象的get()或load()方法获取对象,该对象的状态是持久状态。

2. 持久状态转为瞬时状态

执行Session对象的delete()方法后,对象由原来的持久状态变为瞬时状态,因为此时该对象没有与任何的数据库数据关联。

3. 持久状态转为游离状态

执行了Session对象的evict()、clear()或close()方法,对象由原来的持久状态转为游离状态。

4 .游离状态转为持久状态

重新获取Session对象,执行Session对象的update()或saveOrUpdate()方法,对象由游离状态转为持久状态,该对象再次与Session对象相关联。

5. 游离状态转为瞬时状态

执行Session对象的delete()方法,对象由游离状态转为瞬时状态。

处于瞬时状态或游离状态的对象不再被其他对象引用时,会被Java虚拟机按照垃圾回收机制处理。

3.Hibernate中get()和load()区别

当使用Session的get()方法时,如果加载的数据不存在,get()方法会返回一个NULL;但是使用load()方法,若加载的数据不存在,则会抛出异常。

一.load加载方式

当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。

Session session = HibernateUtil.currentSession();

Transaction tx=session.beginTransaction();

Dept dept = (Dept)session.load(Dept.class,1);

System.out.println(dept);

通过load的方式加载对象时,会使用延迟加载机制,此时得到的User对象其实是一个

代理对象,该代理对象里面仅仅只有id这个属性

二、get加载方式

相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来:

Session session = HibernateUtil.currentSession();

Transaction tx=session.beginTransaction();

// 通过get方法来加载对象时,不管使不使用该对象,都会发出sql语句,

//从数据库中查询

Dept dept = (Dept)session.get(Dept.class,1);

System.out.println(dept);

因此我们可以看到,使用load的加载方式比get的加载方式性能要好一些,因为load加载时,得到的只是一个代理对象,当真正需要使用这个对象时再去从数据库中查询。

终端虚拟化,也就是最终用户桌面在中央储存库的虚拟化,在很多方面不同于服务器虚拟化。一个主要的区别是终端用户虚拟机的构造。创建桌面虚拟机有两种方法,这两种方法分别提供不同的终端虚拟化模式。

持久化的终端用户虚拟机:

在确定你的终端虚拟化模式时,你首先需要考虑的是创建持久化的还是非持久化的。持久化的最终用户虚拟机每个用户使用一个专用的虚拟机。这个专用的虚拟机将包括最终用户必需的应用程序、数据还有虚拟机内部用户状态以及不支持外部服务的要求。然而,由于虚拟机的磁盘文件随着使用而增加,在集中化存储结构下这种终端虚拟化模式将需要大量的存储空间。

这意味着虚拟机的磁盘文件需要长期的管理,通过使用碎片整理、压缩和虚拟磁盘文件维护工具来帮助控制虚拟机的一致性和大小。持久化的虚拟机每个磁盘文件通常以10GB为起点,随着用户在虚拟机内增加数据磁盘文件大小可能显著增加。

但是持久化的虚拟机没有解决组织机构在运行物理桌面时面临的许多问题。因为最终用户数据在虚拟机内部存放,(也就是物理桌面内部)组织机构必须使用各种方式,通常是通过终端虚拟化备份工具来保护数据。

非持久化的最终用户虚拟机:

非持久化的最终用户虚拟机没有上述要求。因为在用户登录时临时被创建。非持久化的虚拟机需要三个核心组件才能正常工作--事实上,这三个核心组件中最关键的终端虚拟化构建模式是下述说明的第一部分:

源端桌面虚拟机,只包含已更新的操作系统和必需的实用程序,比如管理和反恶意软件工具。

虚拟化应用程序或者通过应用程序虚拟化(application virtualization,AppV)工具处理过的程序来捕获它们的运行状态而不是安装过程。因此虚拟应用程序没有被安装而是传输到终端上,这个过程在最终用户真正使用这个程序时启动--正因为如此,在用户登录时虚拟应用程序可以被应用到任何虚拟机。

用户状态虚拟化(User state virtualization,USV),通过终端虚拟化套件中的定制工具或者标准的微软工具,比如文件夹重定向和漫游配置文件实现。USV持续的保护最终用户数据因为它将用户数据保存在虚拟机外,这也适用于用户登录到该虚拟机时。

实际上,因为虚拟机只包含OS,程序和最终用户数据只在登录时被应用,每个虚拟机是非持久化的,因为一旦用户注销虚拟机就能被丢弃。因此终端虚拟化的非持久化虚拟机模式比持久化模式更加通用。

因为不再需要存储单个的虚拟机,这种终端虚拟化模式也大大节省了存储空间。相反,你存储虚拟机的原始拷贝根据需要创建新的虚拟机。需要指出的是AppV和USV都有他们自己独立于终端虚拟化的优势。

最后,终端虚拟化虚拟机在大小和复杂性上随最终用户工作类型的不同而不同。VMware将最终用户划分为三种不同的类型,每种具有他们自己的需求:

任务型员工关注基于少量应用的一小部分重复活动,因此对虚拟机需求相对较低。

知识工作者依靠效能工具来管理信息,他们通常需要完整的生产力套件比如微软Office,同时他们需要经常访问互联网。对虚拟机的需求是中等的。

高级用户使用复杂的应用程序比如开发工具或者绘图工具,对虚拟机的需求更加迫切。

制定终端虚拟化需要的服务器资源计划时,理解你的用户需求是必要的,因为每个虚拟机都需要适量的内存,适当大小的分页文件以减少磁盘访问以及合适的虚拟磁盘文件大小。

考虑持久化的和非持久化的最终用户虚拟机这两种模式,以确定哪种终端虚拟化架构对你的基础设施来说是最好的。

关于“在hibernate中java对象有哪些状态”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[又夏]投稿,不代表智唐科技立场,如若转载,请注明出处:https://3g.pkucxpl.com/zhitang/2085.html

(7)

文章推荐

  • 从历史文化角度看英国文化特征是怎么样的?

    网上有关“从历史文化角度看英国文化特征是怎么样的?”话题很是火热,小编也是针对从历史文化角度看英国文化特征是怎么样的?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。文化作为国家历史的载体,体现民族特征,彰显本国历史的发展有着极为重要的意义。英国国家主流文化的

    2026年02月27日
    20304
  • 植物妈妈是正规品牌吗

    网上有关“植物妈妈是正规品牌吗”话题很是火热,小编也是针对植物妈妈是正规品牌吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。正规品牌。根据十大牌子网查询得知,植物妈妈品牌,创立于2017年,自成立以来,植物妈妈品牌尊崇“踏实、拼搏、责任”的企业精神,并以诚信

    2026年03月01日
    21303
  • 学歌谱从零开始学二胡字母表示什么调

    网上有关“学歌谱从零开始学二胡字母表示什么调”话题很是火热,小编也是针对学歌谱从零开始学二胡字母表示什么调寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1=C26弦1=D15弦1=F6.3弦1=G5.2弦1=A4.

    2026年03月01日
    18317
  • 职业推理常识

    网上有关“职业推理常识”话题很是火热,小编也是针对职业推理常识寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1.求史上最全的推理知识所谓侦探小说中的"密室",我们可以理解为看起来"几乎完全封闭的命案现场"(这个"完全封闭"一般是指看起来只能从房间里面封闭

    2026年03月01日
    18320
  • 中国地方政府税收竞争的原因影响表现有什么

    网上有关“中国地方政府税收竞争的原因影响表现有什么”话题很是火热,小编也是针对中国地方政府税收竞争的原因影响表现有什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。地方政府间税收竞争是市场经济发展的必然产物。税收是调节经济的重要工具,地方政府只要拥有一定权力

    2026年03月03日
    17318
  • 真水貂绒和假水貂绒的区别是什么-

    网上有关“真水貂绒和假水貂绒的区别是什么?”话题很是火热,小编也是针对真水貂绒和假水貂绒的区别是什么?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。真水貂绒的毛平整有光泽、手感柔软且绒毛细腻,假水貂绒不仅无光泽还容易掉毛,摸起来比较坚硬而且会有扎手的感觉,绒

    2026年03月03日
    16321
  • 网吧的店铺怎么开

    网上有关“网吧的店铺怎么开”话题很是火热,小编也是针对网吧的店铺怎么开寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、开设网吧加盟店的场地应符合经营场所有关规定,场所建筑结构安全、合理,安装透明玻璃窗,具有良好的通风、采光条件。网吧门口与中小学校周边最近距

    2026年03月04日
    15300
  • 潍坊到文登自驾车费用及路线

    网上有关“潍坊到文登自驾车费用及路线”话题很是火热,小编也是针对潍坊到文登自驾车费用及路线寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。天鹅湖在山东省东营市东营区文登-东营青威高速-青新高速-荣乌高速-东青高速全程448.6公里自驾车历时5.5小时左右

    2026年03月05日
    12307
  • 宝来如何更换火花塞

    网上有关“宝来如何更换火花塞”话题很是火热,小编也是针对宝来如何更换火花塞寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。宝来如何更换火花塞改变冷态,拔下点火钥匙,用一角硬币拧开发动机塑料装饰罩的六个塑料卡子;用抹布擦去各处的灰尘。拧下3个用于固定带8毫米

    2026年03月05日
    8320
  • 在美国奔驰算是有钱人开的车吗?

    网上有关“在美国奔驰算是有钱人开的车吗?”话题很是火热,小编也是针对在美国奔驰算是有钱人开的车吗?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。首先国内进口高档车贵的一个重要原因是汽车进口税,100%的税率!车原价20万,关税就要20万,厂商经销商再挣点儿钱

    2026年03月06日
    9301
  • 一般挖掘机在工地主要干些什么活

    网上有关“一般挖掘机在工地主要干些什么活”话题很是火热,小编也是针对一般挖掘机在工地主要干些什么活寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。挖掘机主要在工地挖掘土壤、煤、泥沙以及经过预松后的土壤和岩石,并装入运输车辆或卸至堆料场的土方机械里。挖掘机的分类

    2026年03月06日
    9305
  • 土样保存方法

    网上有关“土样保存方法”话题很是火热,小编也是针对土样保存方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。5.1土壤样品采集土壤样品采集应具有代表性,并根据不同分析项目采用相应的采样和处理方法。5.1.1采样单元采样前要详细了解采样地区的土壤类型、肥力

    2026年03月06日
    9315

发表回复

本站作者才能评论

评论列表(3条)

  • 又夏的头像
    又夏 2026年03月07日

    我是智唐科技的签约作者“又夏”

  • 又夏
    又夏 2026年03月07日

    本文概览:网上有关“在hibernate中java对象有哪些状态”话题很是火热,小编也是针对在hibernate中java对象有哪些状态寻找了一些与之相关的一些信息进行分析,如果能碰巧解...

  • 又夏
    用户030712 2026年03月07日

    文章不错《在hibernate中java对象有哪些状态》内容很有帮助