Hibernate实体的三种状态是什么?各有什么特点?
2024-09-08 08:48:56
瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
瞬时态:没有持久化标示符,数据库中无对应记录。当执行save和persist方法可以变成持久态。
持久态:处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。
持久对象具有如下特点:
1. 和session实例关联;
2. 在数据库中有与之关联的记录。
脱管态:当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。
脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象。
脱管对象具有如下特点:
1. 本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;
2. 比瞬时对象多了一个数据库记录标识值。
最新文章
- [技巧] 解决Win7下VMware中vmx86.sys报错的问题
- 如何查看JSP和Servlet版本
- 锱铢必较,从(function(){}())与(function(){})()说起
- 对linux高级用户有用的20个命令
- cookie值的设置,获取及删除
- POJ1422Air Raid(二分图,最小不相交路径覆盖)
- (OK) Linux epoll模型—socket epoll server client chat
- bootstrap-table+x-editable入门
- ArrayDataProvider数据分页
- IDEA通过Git同步代码到Coding
- Android 去除应用标题栏(Android Studio)
- 重新认识 Delphi
- 设置本地虚拟域名windows+apache
- HDU-2680 Choose the best route 单向边+反向dijkstra
- asp.net使用SpeechSynthesizer类生成语音文件部署到iis遇到的几个坑
- HDF5 文件格式简介
- 微信小程序学习笔记(四)
- Python模块学习 - openpyxl
- RTSP - RTP over TCP
- Python3 集合(无序的set)
热门文章
- JVM学习——G1垃圾回收器(学习过程)
- 每日一题:codeforces题解
- yaml语法及格式校验
- StackExchange.Redis 实现SetNx
- 使用Oracle的PROFILE对用户资源限制和密码限制
- rlwrap的使用
- $_SERVER[";QUERY_STRING";],$_SERVER[";REQUEST_URI";],$_SERVER[";SCRIPT_NAME";] 和$_SERVER[";PHP_SELF";]
- node-java的使用及源码分析
- MySQL:输入密码后闪退的解决方法
- JS报错:Uncaught TypeError: Cannot set property ‘nTf‘ of undefined