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关联,然后再删除;如果是删除一个持久化对象,则直接删除。

相关文章
|
9月前
|
Java 数据库
JAVA对象和类
JAVA对象和类
35 0
|
9月前
|
存储 Java 对象存储
Java对象和类
Java对象和类
45 1
|
9月前
|
存储 XML Java
mybatis使用内部类处理一对多类型数据2
mybatis使用内部类处理一对多类型数据2
86 0
|
设计模式 Java 开发者
Spring框架中JavaBean的生命周期及单例模式与多列模式
Spring框架中JavaBean的生命周期及单例模式与多列模式
153 0
|
Java Python
Java实例属性覆写问题
Java实例属性覆写问题
104 0
|
JSON 数据格式
将Object类对象转为对应实体类对象
将Object类对象转为对应实体类对象
493 0
|
存储 Java
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
222 0
javaBean内省类【javaBean、BeanInfo、Introspector、PropertyDescriptor】
|
Java Spring
Spring注入属性中的外部bean、内部bean和级联赋值(超详细)
Spring注入属性中的外部bean、内部bean和级联赋值(超详细)
|
Java
利用构造函数对实体类的属性进行初始化
版权声明:转载请注明作者及出处,否则将追究法律责任。 https://blog.csdn.net/q2158798/article/details/82120266 利用构造函...
1540 0