栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java之Hibernate的状态整理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java之Hibernate的状态整理

在Hibernate框架中对象的存在有不同的状态,只有理解了这些状态,才能对Hibernate的工作机制有所认知。主要有四种:瞬时状态、持久化状态、脱管状态和删除态 。都比较好理解,大致可以看作是临时、稳定、半稳定、回收的几种形式,下面就Hibernate的这几种状态带来详细的介绍。

1.瞬时状态

通过new开辟内存空间创建的实体对象,但是它没有纳入hibernate session的管理之中,如果没有变量对它引用,它将会被JVM(垃圾回收器)回收。瞬时状态的对象在内存中是孤立的,它与数据库无任何关联,仅仅是一个信息携带的载体。

一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。例如调用session的save、saveorupdate等方法的时候。

特征:

(1)使用 new 创建出来的对象,没有设置 id 属性

(2)没有被 session 托管,换句话说 对象数据 存放在内存中, 没有存放到 session 缓存中

(3)临时对象数据 与 数据库中的数据 还没任何关联

2.持久化状态

持久化状态对象存在与数据库中的数据关联,它总是与会话状态(Session)和事务(Transaction)关联在一起。当持久化状态对象发生变动时并不会立即执行数据库操作,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操作的同步性。

当持久化状态对象变为托管状态对象时,它将不在Hibernate持久层的管理范围之内。

特征:

(1)要么是从数据库中使用 get 或 load 方法查询到的数据对象, 要么是 使用save 或 update 方法数据转变成持久层对象

(2)对象 数据被 session 托管。换句话说 对象数据 在 session 缓存中有一份,在数据库中有相应的记录

3.脱管状态

持久化对象的Session关闭之后,这个对象就从持久化状态变为托管状态。托管状态的对象仍然在与数据库中的数据关联,但是他并不在Hibernate的Session管辖范围之内。

如果将脱管状态的对象重新关联到某个新的Session上,它将变回持久化状态对象。

特征:

(1)主要是通过 持久状态对象,调用 session.evict() 或 session.clear() 或 session.close() 得到的,也可以new 一个设置 id 值的对象

(2)session 缓存中没有,内存中有的对象(注: 该对象设置了 id 值)

4.删除态

调用session的delete方法时,对象转为删除态。删除态只能等待被回收。

以上就是java之Hibernate的状态整理,相信大家已经掌握住了基本要点。本篇主要是一些理论的介绍,关于实际的运用会在Hibernate框架中有所涉及。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15018.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号