博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中java对象的三种状态
阅读量:5223 次
发布时间:2019-06-14

本文共 837 字,大约阅读时间需要 2 分钟。

java对象的三种状态

当前应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期持久化生命周期是Hibernate中的一个挂按键的概念,正确地理解生命周期可以更好的了解Hibernate的实现原理 掌握Hibernate的正确用法,Hibernate框架通过Session来管理java对象的状态,在持久化生命周期中java对象存在以下三种状态

1瞬时状态(Transient)

通过new创建对象后,对象并没有立即持久化 他并未与数据库发生任何关系,此时java对象的状态为瞬时状态,Session对与瞬时状态的对象一无所知,当对象不在被其他对象引用时他的数据也就丢失了,对象将按照垃圾回收机制处理

2持久状态(Persistent)

当对象与Session关联 被Session管理时 他就除于持久状态,处于持久状态的对象拥有数据标识(数据库中的主键值)那么对象是什么时候与session对象关联的呢

有两种方式:第一种通过Session的查询接口或者是get()方法或者是load方法()从数据库中加载对象的时候,家在状态的对象,通过调用session的save方法或者saveOrUpdate方法时java对象也与session发生关联,对于处于持久状态的对象,session会跟踪和管理他们,如果对象的内部状态发生了任何变化,hibernate会选择合适的实际(如事务提交时)将变更固化到数据库中。

3游离状态(Detached)处于持久化的对象 脱离与其关联的Session管理后对象就处于游离状态,处于游离状态的对象Hibernate无法感知到对象的任何操作Session提供了两个方法(Update() merge())将处于游离状态的对象与一个新的session发生关联,这是对象的状态就从游离转持久化。

转载于:https://www.cnblogs.com/langjunnan/p/6029209.html

你可能感兴趣的文章
Leetcode 226: Invert Binary Tree
查看>>
http站点转https站点教程
查看>>
解决miner.start() 返回null
查看>>
关于MFC中窗口的销毁
查看>>
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
js += 含义(小知识)
查看>>