Hibernate的持久化类状态
Hibernate的持久化类状态
持久化类:就是一个实体类 与 数据库表建立了映射.
Hibernate为了方便管理持久化类,将持久化类分成了三种状态.
瞬时态 transient (临时态):持久化对象没有唯一标识OID.没有纳入Session的管理
持久态 persistent :持久化对象有唯一标识OID.已经纳入到Session的管理(持久化持久态对象有自动更新数据库的能力)
脱管态 detached (离线态):持久化对象有唯一标识OID,没有纳入到Session管理
区分三种持久化对象的状态
@Test
// 区分持久化对象的三种状态:
public void demo1(){
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction();
// 向数据库中保存一本图书:
Book book = new Book(); // 瞬时态:没有唯一标识OID,没有与session关联.
book.setName("Hiernate开发");
book.setAuthor("孙XX");
book.setPrice(65d);
session.save(book); // 持久态:有唯一标识OID,与session关联.
// 3.事务提交
tx.commit();
// 4.释放资源
session.close();
book.setName("Struts2开发"); // 脱管态:有唯一的标识,没有与session关联.
}
三种状态对象转换
瞬时态
获得:Book book = new Book();
瞬时--->持久:save(book) (save()/saveOrUpdate())
瞬时--->脱管:book.setId(1);
持久态
获得:Book book = (Book)session.get(Book.class,1) (get()/load()/find()/iterate())
持久--->瞬时:delete(book) (特殊状态:删除态(被删除的对象,不建议去使用))
持久--->脱管:session.close() (close()/clear()/evict())
脱管态
获得: Book book = new Book();
book.setId(1);
脱管--->持久:session.update() (update()/saveOrUpdate()/lock())
脱管--->瞬时:book.setId(null)
持久态对象有自动更新数据库的能力(自动更新数据库的能力依赖了Hibernate的一级缓存)
@Test
// 测试持久态的对象自动更新数据库
public void demo2(){
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// 获得一个持久态的对象.
Book book = (Book) session.get(Book.class, 1);
book.setName("Struts2开发");
// session.update(book);//不需要写这句话,在事务提交后即可完成更新
tx.commit();
session.close();
}
Hibernate的持久化类状态的更多相关文章
- java框架之Hibernate(2)-持久化类&主键生成策略&缓存&事务&查询
持久化类 概述 持久化:将内存中的对象持久化到数据库中的过程就是持久化.Hibernate 就是用来进行持久化的框架. 持久化类:一个 Java 对象与数据库的表建立了映射关系,那么这个类在 Hibe ...
- hibernate的持久化类、主键生成策略
一.hibernate的持久化类 1.什么是持久化类: 持久化:将数据存储到关系型数据库. 持久化类:与数据库中的数据表建立了某种关系的java类.(持久化类=javabean+映射配置文件) 2.持 ...
- 【Hibernate】持久化对象状态及以及缓存
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种 ...
- 三、hibernate中持久化类的使用
hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...
- Hibernate学习——持久化类的学习
A.概念 持久化:将内存中的对象持久化(存储)到数据库的过程.Hibernate就是持久化的框架. 持久化类:一个普通java对象与数据库的表建立了映射关系,那么这个类在Hiberna中被称为持久化类 ...
- Hibernate中持久化类与持久化对象
1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...
- 笔记:Hibernate 持久化类标注说明
持久化类标注 标注 @Entity:注解声明该类是一个Hibernate的持久化类 标注 @Table:指定该类映射的表 参数 name:指定映射数据库表的名称 参数 uniqueConstraint ...
- (转) Hibernate持久化类与主键生成策略
http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...
- Hibernate的持久化对象
Hibernate的持久化类 什么是持久化类 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * ...
随机推荐
- Python:IDLE清屏
清屏很简单,为IDLE增加一个清屏的扩展ClearWindow即可. 首先下载clearwindow.py(点击可直接下载,不能下载的可以右键保存,格式为py结尾), 将这个文件放到Python安装目 ...
- zsh 通信脚本
server #!/bin/zsh #zsh TCP server script zmodload zsh/net/tcp #listening port ztcp -l #This is a fil ...
- plsql客户端显示菜单等
不小心把plsql的左边的都关了,如图 菜单条---工具---浏览器. 即可.
- NYOJ之XX和OO
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAI0CAIAAABgWyN9AAAgAElEQVR4nO3dPW7jyt4n4NmEcy/EaW
- stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间
[root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...
- location url 反向代理到来机的其它端口 gitlab
location /nexus { proxy_pass http://127.0.0.1:8081/nexus; } [root@GitMaven conf]# pwd /var/opt/gitla ...
- 数据结构和算法 – 6.构建字典: DictionaryBase 类和 SortedList 类
6.1.DictionaryBase 类的基础方法和属性 大家可以把字典数据结构看成是一种计算机化的词典.要查找的词就是关键字,而词的定义就是值. DictionaryBase 类是一种用作专有字 ...
- Java内存泄露的理解与解决
依赖于引用判断的内存管理机制 Java中对内存对象的访问,使用的是引用的方式.在Java代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间.在Ja ...
- Bootstrap简介
接下来的一段时间,想研究一下现有的网页框架,第一个不容错过的就是Bootstrap,Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CS ...
- elasticsearch入门
到 https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.zip 下载最新包: 启动: ./elast ...