当前位置:首页>开发>正文

hibernate的对象的三种持久化状态,并给出解释? hibernate对象的三种状态是什么

2023-04-13 11:27:32 互联网 未知 开发

 hibernate的对象的三种持久化状态,并给出解释? hibernate对象的三种状态是什么

hibernate的对象的三种持久化状态,并给出解释?

瞬时态:简单的说就是你在程序里面new一个对象,还没有和session关联
持久态:对象和session有了关联,对象处于hibernate框架管理中
游离态:在持久态的情况下,对象和session失去了关联,比如session.close()或session.flush()
后,即游离态,但数据已经存储到了数据库

hibernate对象的三种状态是什么?

(1)瞬态:表示该实体对象在内存中是自由存在的,也就是说与数据库中的数据没有任何的关联即,该实体从未与任何持久化上下文联系过,没有持久化标识(相当与主键)。瞬态实体的特征有:
               与数据库中的记录没有任何关联,也就是没有与其相关联的数据库记录 与Session没有任何关系,也就是没有通过Session对象的实例对其进行任何持久化的操作。
(2)持久态:指该实体对象处于Hibernate框架所管理的状态,也就是说这个实体对象是与Session对象的实例相关的。处于持久态的实体对象的最大特征是对其所作的任何变更操作都将被Hibernate持久化到数据库中。处于持久态的对象具有的特征为:              
  每个持久态对象都于一个Session对象关联
               处于持久态的对象是于数据库中的记录相关联的
               Hibernate会根据持久态对象的属性的变化而改变数据库中的相应记录
(3)游离态:处于持久态的实体对象,当他不再与Session对象关联时,这个对象就变成了游离态。。游离态对象的特征有:
                游离态对象一定是由持久态对象转换而来
                游离态实体不再于Session关联
              游离态实体对象与数据库中的数据没有直接联系,主要表现在对其进行的修改不再影响到数据库中的数据
               游离态实体对象在数据库中有相应的数据记录(如果该记录没有被删除)

在hibernate中,一个持久化类的实例可能存在的状态有哪些

首先持久化作用是将程序数据在持久状态和瞬时状态间转换的机制。即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等

hibernate对象有几种状态

答案转载自csdn论坛:http://blog.csdn.net/heng_ji/article/details/686281实体的生命周期中,实体主要经过瞬时(Transient),托管(Attatched或Managed),游离(Detached)和销毁

(Removed)四个状态.

瞬时状态:是指对象被new之后尚未保存到数据库,一旦服务器停止,JVM会回收它所占的内存资源,此时对

象没有与session关联.

托管状态:在数据库中已有数据与之对应,且与session相关联。实体状态转换到托管状态的方法:
A.调用persist(),实体从游离转变到托管,最后变成持久化状态.
B.调用find()或Query执行查询,实体从持久变成托管.
C.调用refresh(),游离实体将被重新加载,变成托管状态.
D.调用merge(),将游离实体变成托管实体.

游离状态:数据库中有数据与之对应但不在session的管理范围,它的属性不与数据库中持久化的实体同

步.
实体从托管变成游离的情况有:
A.当一个事务结束,实体超过持久化上下文作用域,实体变成游离态
B.当复制实体对象或序列化时,实体将变成游离态
C.调用clear方法时,所有的实体将强制转化为游离态

销毁状态:是实体从数据库删除后的状态

java框架hibernate的实体对象有哪三种状态?以及这三种状态下,对实体进行修改会不会同步到数据库里?

1. 瞬时状态: 当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态。自由对象最大的特点就是,在数据库中不存在一条与它对应的记录。

2. 持久状态: 持久化对象就是已经被保存进数据库的实体对象,并且这个实体对象现在还处于Hibernate的缓存管理之中。这是对该实体对象的任何修改,都会在清理缓存时同步到数据库中。

3. 脱管状态:当一个持久化对象,脱离开Hibernate的缓存管理后,它就处于游离状态,游离对象和自由对象的最大区别在于,游离对象在数据库中 可能还存在一条与它对应的记录,只是现在这个游离对象脱离了Hibernate的缓存管理,而自由对象不会在数据库中出现与它对应的数据记录。

脱管状态的实体信息不会同步到数据库,而是会从数据库中返回该持久化状态
在持久状态下,该实体对象的任何修改,都会同步到数据库中。

hibernate对象三中状态,还有调用什么方法的时候状态之间的转换

对于和ibernate而言,对象有三种状态:瞬时对象,持久对象,游离对象或脱管对象 1.瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm的垃圾收集器回收,一般是new出来且与session没有关联的对象 2.持久(persistent):数据库中有数据与之对应,当前session有关联,并且相关联的session没有关闭,事务没有提交持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到 )。 3,脱管(detached):数据库中有数据与之对应,但当前没有session与之关联脱管对象状态发生改变,hibernate不能检测到。

最新文章