Hibrenate实体类对象状态

简介: Hibrenate实体类对象状态

Hibernate实体对象四大状态:


1.瞬时态:new出一个对象后,没有与hibernate的Session关联起来的对象就是瞬时态。瞬时对象不会被持久化到数据库中,也不会被赋予持久化标识。 如果瞬时对象在程序中没有被引用,它会被垃圾回收器销毁。


2.持久态:持久态对象的实例在数据库中有对应的记录,并拥有一个持久化标识ID,例如瞬时态的对象通过Session的save()、saveOrUpdate()、persist()、merge()方法与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久态对象。


3.脱管态(游离态):持久对象关联的Session被close()、clear()、evict()或flush()后,对象就变为脱管的。它还含有持久化标识。脱管态不能直接持久化,需要重新保存。


4.删除态:调用Session的delete方法之后,对象就变成删除态,此时Session中仍然保存有对象的信息,对删除态对象的引用依然有效,对象可继续被修改。删除态对象如果重新关联到某个新的 Session 上(也就是执行持久化操作), 会再次转变为持久的。


saveOrUpdate这个方法会根据不同的状态来操作数据库,如果当前的状态的是瞬时态就添加操作,如果当前的状态是托管态就做修改操作。


删除一个脱管对象时,首先要与session关联,然后再删除;如果是删除一个持久化对象,则直接删除。

相关文章
|
7月前
|
SQL 缓存 Java
Hibernate对象状态之间的神奇转换
Hibernate对象状态之间的神奇转换
|
3天前
|
Java 数据库
JAVA对象和类
JAVA对象和类
8 0
|
1月前
|
存储 Java 对象存储
Java对象和类
Java对象和类
15 1
|
6月前
|
设计模式 Java 开发者
Spring框架中JavaBean的生命周期及单例模式与多列模式
Spring框架中JavaBean的生命周期及单例模式与多列模式
82 0
|
7月前
|
Java Spring
Spring注入和new对象产生的错误场景
Spring注入和new对象产生的错误场景
61 1
|
存储 Java
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
176 0
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
|
Java 数据库
内省机制(操作javaBean的信息)
内省机制(操作javaBean的信息)
94 0
内省机制(操作javaBean的信息)
|
Java 开发者
级联对象实例化|学习笔记
快速学习级联对象实例化
110 0
级联对象实例化|学习笔记