day35 02-Hibernate持久化对象状态及状态转换


hibernate内置有一个c3p0,不用引入c3p0的jar包也行。
现在其实可以不用去创建表和实体类。因为hibernate可以自动帮我们生成。只要把映射建好了它就可以自动帮我们生成。
创建实体类和对应的映射。



一运行java项目hibernate3_day02的工具类/hibernate3_day02/src/cn/itcast/utils/HibernateUtils.java就可以生成表。前提是先建立数据库hibernate3_day02。必须得有数据库才行。











package cn.itcast.hibernate3.demo1; import static org.junit.Assert.*; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test; import cn.itcast.utils.HibernateUtils; /**
* Hibernate的测试类
*
* @author zhongzh
*
*/ public class HIbernateTest1 { @Test
//区分持久化对象的三种状态:
public void demo1() {
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction(); //往数据库去保存一本图书:
Book book = new Book();//book是一个持久化对象,因为book有一个实体类已经
//和我们的表建立起映射了 Book是一个持久化类 一new()就是瞬时态了
//瞬时态: 没有唯一标识OID,没有与session关联.
//刚new()出来,从数据库里面也不知道它是什么。它根本就没有OID,没有和session关联,是一个单独的
//对象
book.setName("Hibernate开发");
book.setAuthor("孙XX");
book.setPrice(65d); session.save(book); //持久态 往数据库一存它就有OID了,而且是和session关联。
//持久态: 有唯一标识OID,与session关联. // 3.事务提交
tx.commit();
//4.释放资源
session.close(); book.setName("Struts2开发"); //脱管态 session关闭了,book不与session关联了。
//脱管态:有唯一的标识,没有与session关联.
fail("Not yet implemented");
} }




find()不用记,是JPA提供的接口中的一个方法。那么hibernate肯定得有它的一个实现。get()、load()、find()、iterate()都是做查询的。
虽然这个状态图是官方给出来的,但是并不是十分的标准。有很多人认为,delete(book)之后也不是瞬时态的。delete(book)之后这个对象不是马上销毁的,只不过对应的数据库中的记录没有了。还有人认为,没有OID了,但是它还没有解除与session的关系。

官方给出的状态图不建议你直接获取脱管态对象。




day35 02-Hibernate持久化对象状态及状态转换的更多相关文章
- 1.1Hibernate持久化类和Hibernate持久化对象状态
一.持久化对象po类 1.po定义 PO,是Persistent Object的缩写,是持久化类.PO是由PO=POJO+hbm映射配置组成. 2.通俗理解 PO类即持久化类,其实就是一个普通的Jav ...
- hibernate映射对象三种状态的分析
一,首先hibernate中对象的状态有 三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate(). get().lo ...
- ORM进阶之Hibernate中对象的三大状态解析
ORM进阶之 ORM简单介绍 ORM进阶之Hibernate简单介绍及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 在Hibernatea中每一 ...
- Hibernate持久化对象修改id重新保存的办法
Hibernate持久化对象修改id重新保存的办法——Hibernate学习记录二 2017年11月10日 20:16:48 筱光 阅读数:1122 版权声明:本文为博主原创文章,未经博主允许不得 ...
- hibernate 持久化对象 save
hibernate 持久化对象 save new出来的user对象是游离状态的对象,执行session.save()方法保存后,user对象就变为持久化了,持久化的对象跟数据库表双向绑定的意思, 对象 ...
- Hibernate持久化对象状态
在Hibernate中,持久化对象再被操作过程中分为三个时期.这三个时期和session周期相关. 各自是瞬时(Transient),持久太(persistent)和游离态(Detached) 瞬时状 ...
- Hibernate持久化对象的三种状态深入理解
关于OID hibernate缓存是一个map,他会根据OID作为缓存对象的key,我们的映射文件中<id>标签指定的属性值会作为OID 持久化对象的三种状态 为了方便理解,Hiberna ...
- hibernate 持久化对象的三个状态
Hibernate中的对象有3种状态 瞬时对象(TransientObjects).持久化对象(PersistentObjects)和离线对象(DetachedObjects也叫做脱管对象) Tran ...
- 【SSH系列】-- Hibernate持久化对象的三种状态
在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是 ...
- Hibernate持久化对象的状态
1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态, 暂时状态, 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到还有一个状态 ...
随机推荐
- 防止php重复提交表单更安全的方法
Token.php <?php /* * Created on 2013-3-25 * * To change the template for this generated file go t ...
- 有些事情不要强求 PS:日常收集语录
有些事情不要强求 1.有些事,我们明知道是错的,也要去坚持,因为不甘心:有些人,我们明知道是爱的,也要去放弃,因为没结局:有时候,我们明知道没路了,却还在前行,因为习惯了. 2.以为蒙上了眼睛,就可以 ...
- SQL Compare
http://pan.baidu.com/s/1jGIEEm6 来源:数据库同步工具: Red Gate Sql Compare
- 08-THREE.JS 点面创建物体,克隆物体,多材质物体
<!DOCTYPE html> <html> <head> <title></title> < <script src=&quo ...
- CentOS学习笔记(一):中文语言包及输入法的安装使用
1.中文语言包安装 命令行执行: yum install fonts-chineseyum install fonts-ISO8859-2 2.切换成中文语言 菜单->System->Ad ...
- Spring Boot 简单日志配置
在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件## 默认使用logback logging.level.root=error ...
- C#文件操作常用相关类(Directory类、File类、Path类)
1.文件操作常用相关类 1)File //操作文件,静态类,对文件整体操作.拷贝.删除.剪切等 2)Directory //操作目录(文件夹),静态类 3)DirectoryInfo //文件夹的一个 ...
- 真机环境spotlight光源丢失
maya做好的模型生成的fbx,导入到unity之后,pc运行正常,到了ios真机上发现光线丢失,场景内物体都是暗暗的,查出来原因是spot光源丢失了,选中spot光源,在其Render Mode里, ...
- Linux中sort和uniq关于排序去重的那些用法
相信在Linux下对文件操作经常会用到sort和uniq命令,下面系统的介绍一下这两个命令的用法. sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出.sort命令既可以从特 ...
- storm 学习教程
转自:http://blog.csdn.net/hrn1216/article/details/51538962 翻译太累了,再也不想去翻译了,真的太累了: 在这个教程中, 你将学到如何创建一个Sto ...