Hibernate之持久化对象
时间:2017-1-19 23:00
——Hibernate持久化类的状态
1、持久化类:就是一个实体类与数据库建立了映射。
2、Hibernate为了方便管理持久化类,将持久化类分为了三种状态:
1)瞬时态:transient(临时态)
2)持久态:persistent
3)脱管态:detached(离线态)
——三种持久化对象的状态
1、三种持久化对象的状态
1)瞬时态
不存在持久化标识OID,尚未与Hibernate Session关联对象,被认为处于瞬时状态,失去引用将被JVM回收。
无持久化标识OID,未与Session关联。
2)持久态
存在持久化标识OID,与当前Session有关联,并且关联的Session没有关闭,事务未提交。
存在持久化标识OID,与Session关联。
持久化对象有自动更新数据库的能力。
3)脱管态
存在持久化OID,但没有与当前Session关联,脱管状态改变时Hibernate无法检测。
存在持久化标识OID,未与Session关联。
2、区分三种持久化对象的状态
示例代码:
3、三种状态对象的转换
瞬时态:
Book book = new Book();
1)瞬时态 ——> 持久态
Book book = new Book();
session.save(book);
2)瞬时态 ——> 脱管态
book.setId(1); // 设置OID
持久态:
Book book = (Book)session.get(Book.class, 1);
get() / load() / find() iterate()
1)持久态 ——> 瞬时态
session.delete(book); // 删掉之后就没有OID了
2)持久态 ——> 脱管态
session.close()
clear() / evict(book) 将Session中的指定对象删除。
脱管态:
Book book = new Book();
book.setId(1);
1)脱管 ——> 持久
session.update(book);
2)脱管 ——> 瞬时
book.setId(null);
——持久态对象自动更新数据库
示例代码:
——总结
1、Hibernate持久化对象的状态:
* 瞬时态
没有唯一标识OID,没有与Session关联
* 持久态
有唯一标识OID,与Session关联
* 脱管态
有唯一标识OID,没有与Session关联
2、瞬时态对象
User user = new User()
瞬时态-->持久态
session.save(user)
瞬时态-->脱管态
user.setId(1)
3、持久态对象
get() / load()
持久态-->瞬时态
session.delete(Object)
持久态-->脱管态
session.close() / session.clear() / session.evice()
4、脱管态
User user = new User();
user.setId(1)
脱管态-->瞬时态
user.setId(null)
脱管态-->持久态
save() / saveOrUpdate()
Hibernate之持久化对象的更多相关文章
- hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)
三态的基本概念: 1, 暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象 ...
- hibernate中持久化对象的生命周期(转载)
三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2 ...
- hibernate中持久化对象的状态
持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管 ...
- Hibernate -- 操作持久化对象
知识点2: session概述 Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口,它提供了基本的保存,更新, 删除和加载Java对象的方法. 知识点3:理解ses ...
- hibernate载入持久化对象的两种方式——get、load
一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更 ...
- Hibernate的持久化对象
Hibernate的持久化类 什么是持久化类 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * ...
- 【Hibernate】持久化对象状态及以及缓存
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种 ...
- Hibernate(二)持久化对象的状态
简介 以前学习Hibernate的笔记,整理一下便发出来了,防止弄丢.有错误的话麻烦各位留言评论,感激不尽. 持久化类 Hibernate完成了从面向对象模型表示的对象至关系模型表示的数据结构的映射, ...
- Hibernate的持久化对象配置
定义Pojo对象和**.hbm.xml文件 -1 对于每一个需要持久化的对象都需要创建一个Pojo类定义,Hibernate要求POJO类定义中必须有一个no-argument的构造方法,便于Hibe ...
随机推荐
- JavaScript学习之路(个人理解&经验):构造函数、类、实例
构造函数: 声明:"构造函数"是一类函数的 "名字" 正确的读法是"构造函数"而不是"构造 / 函数" 构造函数形如普通 ...
- Linux虚拟机扩展磁盘
Linux虚拟机扩展磁盘 1.虚拟机关机,Vmware中扩展磁盘 2.虚拟机开机,查看磁盘大小 [root@hadoop6 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmp ...
- P2490 [SDOI2011]黑白棋
P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...
- 【排序+模拟】魔法照片 luogu-1583
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- 添加底部导航栏tabbar
效果图: 如果要添加底部导航栏,最少2个,最多5个. app.json { "pages": [ "pages/index/index", "page ...
- java垃圾回收机制学习总结
最近学习了一下java垃圾回收机制,将其主要内容大致总结一下: 1.什么是垃圾回收机制 java GC机制(garbage collection,垃圾收集,垃圾回收),是java特有的机制,作为jav ...
- weex打包android apk采坑之旅(windows)
1. npm install weex-toolkit -g 后weex命令不起作用 ,解决办法把weex.cmd所在的目录添加到环境变量PATH 2.weex命令每次报找不到文件'C:\Progra ...
- raven靶机
仅供个人娱乐 靶机信息 Raven 下载地址:https://www.vulnhub.com/entry/raven-1,256/ 一.主机探测 端口信息 目录扫描 80端口 根据页面开始搜寻有用的信 ...
- Sunset靶机
仅供个人娱乐 靶机信息 https://www.vulnhub.com/entry/sunset-sunrise,406/ 一.主机探测 二.信息收集 nmap -sS -sV -T5 -A -p- ...
- 从 HTTP 切换到 HTTPS,这下我的技术博客安全了吧?
博客园 的小伙伴们,大家好,我是刚脱离险境的二哥呀! 很久(大概两年)之前,我就搞了一个独立的个人博客网站,长下面这样. 大家有访问过的,可以在评论区扣 1 可惜一直没搞备案和 HTTPS,导致每次访 ...