hibernate教程--持久化类状态详解
一、 Hibernate的持久化类状态:
1.1 Hibernate的持久化类状态
持久化类:就是一个实体类 与 数据库表建立了映射.
Hibernate为了方便管理持久化类,将持久化类分成了三种状态.
瞬时态 transient:(临时态)
持久态 persistent:
脱管态 detached:(离线态)
1.2 三种持久化对象的状态:
Transient瞬时态:
特点:持久化对象没有唯一标识OID.没有纳入Session的管理.
Persistent持久态:
特点:持久化对象有唯一标识OID.已经纳入到Session的管理.
结论:持久化持久态对象有自动更新数据库的能力.
Detached脱管态:
特点:持久化对象有唯一标识OID,没有纳入到Session管理.
1.3 区分三种持久化对象的状态:
@Test// 区分持久化对象的三种状态:public void demo1(){// 1.创建SessionSession 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关联.}
1.4 三种状态对象转换:
1.4.1、瞬时态:
获得:
Book book = new Book();
瞬时--->持久
* save(book);
* save()/saveOrUpdate();
瞬时--->脱管
* book.setId(1);
1.4.2、持久态:
获得:
Book book = (Book)session.get(Book.class,1);
* get()/load()/find()/iterate();
持久--->瞬时:
* delete(book);
* 特殊状态:删除态.(被删除的对象,不建议去使用.)
持久--->脱管:
* session.close();
* close()/clear()/evict();
1.4.3、脱管态:
获得:
Book book = new Book();
book.setId(1);
脱管--->持久:
* session.update();
* update()/saveOrUpdate()/lock()
脱管--->瞬时:
* book.setId(null);
1.5 持久态对象有自动更新数据库的能力;
@Test// 测试持久态的对象自动更新数据库public void demo2(){// 1.创建SessionSession session = HibernateUtils.openSession();// 2.开启事务Transaction tx = session.beginTransaction();// 获得一个持久态的对象.Book book = (Book) session.get(Book.class, 1);book.setName("Struts2开发");// session.update(book);// 3.提交事务tx.commit();// 4.关闭资源session.close();}
hibernate教程--持久化类状态详解相关推荐
- hibernate教程--持久化类状态
一. Hibernate的持久化类状态: 1.1Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态. ...
- hibernate教程--抓取策略详解
Hibernate的抓取策略 1.1. 区分延迟和立即检索: 立即检索: * 当执行某行代码的时候,马上发出SQL语句进行查询. * get() 延迟检索: * 当执行某行代码的时候,不会马上发出SQ ...
- hibernate教程--关联关系的映射详解
1.1 Hibernate关联关系的映射 1.1.1 实体之间的关系: 实体之间有三种关系: * 一对多: * 一个用户,生成多个订单,每一个订单只能属于一个用户. * 建表原则: * 在多的一方创建 ...
- Unity的C#编程教程_52_类 Class 详解及应用练习(一)
文章目录 C# Classes for Behaviours Custom Classes 1. Custom Classes 2. Serialized Custom Class RPG Item ...
- java uml类图教程_Java利器之UML类图详解
原标题:Java利器之UML类图详解 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者- Code4Android 如需转载,发送「转载」二字查看说明 前言 UML(Unified Modeli ...
- sstream类的详解
sstream类的详解 sstream类详细介绍 C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象 ...
- Hibernate配置文件与映射文件详解
Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...
- AndroidManifest.xml文件配置教程及相关指令详解
AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...
- Nmap扫描教程之基础扫描详解
Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...
最新文章
- Java正则表达式入门
- 风控特:关系网络特征工程入门实践
- Scala2.11.7学习笔记(二)函数定义
- C++ 数组在内存中的分配
- 1286:怪盗基德的滑翔翼(错)
- 详解李兰娟团队重大抗疫药物成果:2款处方药,体外试验有奇效,已在浙江临床使用...
- ROS机器人程序设计(原书第2版)3.9 3D可视化
- php客户端和服务器的值传递
- Ubuntu18.04安装Oracle11g
- rapidxml库生成xml小例子及需注意的问题
- 杰奇win系统装Linux,杰奇小说liunx+win下关关完美运行采集方案
- 瑞星云安全截获新感染病毒 6月感染网民263万
- 花瓣网爬取美女图片 每次20张
- 计算机语言学方面的期刊.,自然语言处理投稿哪些sci期刊
- 毕业前写了20万行代码,让我从成为同学眼里的面霸
- Gephi报错cannot load even default layout, using internally predefined configuration解决方法
- steam 无法连接远程计算机,steam错误并提示无法连接至steam网络怎么解决?
- 5000字、12字 连环炮、一张图快速解决线程池
- Java第一次实训报告
- android nv位图打印机_通过C#中的comport将位图图像打印到pos打印机