Java对象在Hibernate持久化层的状态

Hibernate中的Java对象在他的生命周期中,可处于以下四个状态之一。

1.临时状态(Transient):刚用new语句创建,还没有被持久化,并且不处于Session的缓存中。处于临时状态的Java对象被称为临时对象。

2.持久化状态(persistent):已经被持久化,并且加入到Session缓存中。处于持久化状态的Java对象被称为持久化对象。

3.删除状态(removed):不再处于Session的缓存中,并且Session已经计划将其从数据库中删除。处于删除状态的Java对象被称为被删除对象。

4.游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离态的Java对象被称为游离对象。

临时对象的特征:

1.在使用代理主键的情况下,OID通常为NULL。

2.不处于Session的缓存中,也可以说,不被任何一个Session实例关联。

3.在数据库中没有对应的记录。

在以下情况下,Java对象进入临时状态。

1.当通过new语句刚创建了一个Java对象,它处于临时状态,此时不和数据库中的任何记录对应。

2.在Hibernate的配置文件中的hibernate.use_identifier_roll_backz属性为true的情况下,Session的delete()方法能使一个持久化对象或游离对象转变为临时对象。

持久化对象的特征:

1.OID不为null。

2.位于一个Session实例的缓存中,也可以说,持久化对象总是被一个Session实例关联。

3.持久化对象和数据库中的相关记录对应。

4.Session在清理缓存时,会根据持久化对象的属性变化,来同步更新数据库。

Session的许多方法都能够使Java对象转变为持久化对象:

1.Session的save()方法把临时对象转变为持久化对象。

2.Session的load()方法或get()方法返回的对象总是处于持久化状态。

3.Query的list()方法返回的List集合中存放的都是持久化对象。

4.Session的update()、saveOrUpdate()和lock()方法使游离对象转变为持久化对象。

5.当一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时会把这个临时对象也转变为持久化对象。

被删除对象的特征:

1.OID不为null。

2.从一个Session实例的缓存中删除。

3.被删除对象和数据库中的相关记录对应。

4.Session已经计划将其从数据库中删除。

5.Session在清理缓存时,会执行SQL delete语句,删除数据库中的相应记录。

6.一般情况下,应用程序不应该再使用被删除的对象。

在以下情况下,Java对象会进入删除状态:

1.在Hibernate的配置文件中的hibernate.use_identifier_rollback属性去默认值false的情况下,Session的delete()方法把持久化对象及游离对象转变为被删除对象。

2.当一个持久化对象A关联一个持久化对象,在允许级联删除的情况下,Session删除持久化对象A时,会级联删除持久化对象B,使得持久化对象A和持久化对象B都进入删除状态。

游离对象的特征:

1.OID不为null。

2.不再位于Session的缓存中,也可以说,游离对象不被Session关联。

3.游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录。

Session的以下方法使持久化对象转变为游离对象。

1.当调用Session的close()方法时,Session的缓存被清空,缓存中的所有持久化对象都变为游离对象。如果在应用程序中没有引用变量引用这些游离对象,它们就会结束生命周期。

2.Session的evict()方法能够从缓存中清除一个持久化对象,使它变为游离对象。当Session的缓存中保存了大量的持久化对象,会消耗许多内存空间,为了提高性能,可以考虑调用evict()方法,从缓存中清楚一些持久化对象。但是在多数情况下不推荐使用evict()方法,而应该通过查询语言或者显示的导航来控制对象图的深度。

3.Session的clear()方法能够清除缓存中的所有持久化对象,使他们变为游离对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容