一、 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教程--持久化类状态详解相关推荐

  1. hibernate教程--持久化类状态

    一. Hibernate的持久化类状态: 1.1Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态. ...

  2. hibernate教程--抓取策略详解

    Hibernate的抓取策略 1.1. 区分延迟和立即检索: 立即检索: * 当执行某行代码的时候,马上发出SQL语句进行查询. * get() 延迟检索: * 当执行某行代码的时候,不会马上发出SQ ...

  3. hibernate教程--关联关系的映射详解

    1.1 Hibernate关联关系的映射 1.1.1 实体之间的关系: 实体之间有三种关系: * 一对多: * 一个用户,生成多个订单,每一个订单只能属于一个用户. * 建表原则: * 在多的一方创建 ...

  4. Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C# Classes for Behaviours Custom Classes 1. Custom Classes 2. Serialized Custom Class RPG Item ...

  5. java uml类图教程_Java利器之UML类图详解

    原标题:Java利器之UML类图详解 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者- Code4Android 如需转载,发送「转载」二字查看说明 前言 UML(Unified Modeli ...

  6. sstream类的详解

     sstream类的详解             sstream类详细介绍 C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象 ...

  7. Hibernate配置文件与映射文件详解

    Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...

  8. AndroidManifest.xml文件配置教程及相关指令详解

    AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...

  9. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

最新文章

  1. Java正则表达式入门
  2. 风控特:关系网络特征工程入门实践
  3. Scala2.11.7学习笔记(二)函数定义
  4. C++ 数组在内存中的分配
  5. 1286:怪盗基德的滑翔翼(错)
  6. 详解李兰娟团队重大抗疫药物成果:2款处方药,体外试验有奇效,已在浙江临床使用...
  7. ROS机器人程序设计(原书第2版)3.9 3D可视化
  8. php客户端和服务器的值传递
  9. Ubuntu18.04安装Oracle11g
  10. rapidxml库生成xml小例子及需注意的问题
  11. 杰奇win系统装Linux,杰奇小说liunx+win下关关完美运行采集方案
  12. 瑞星云安全截获新感染病毒 6月感染网民263万
  13. 花瓣网爬取美女图片 每次20张
  14. 计算机语言学方面的期刊.,自然语言处理投稿哪些sci期刊
  15. 毕业前写了20万行代码,让我从成为同学眼里的面霸
  16. Gephi报错cannot load even default layout, using internally predefined configuration解决方法
  17. steam 无法连接远程计算机,steam错误并提示无法连接至steam网络怎么解决?
  18. 5000字、12字 连环炮、一张图快速解决线程池
  19. Java第一次实训报告
  20. android nv位图打印机_通过C#中的comport将位图图像打印到pos打印机

热门文章

  1. stm8s开发(七) SPI的使用:SPI主机通信!
  2. ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程
  3. 编译原理 之 解释器
  4. [密码学] RSA利用解密指数分解n
  5. Kubernetes中Pod的生命周期
  6. 【Flask】Jinja2模板之过滤器
  7. [ATF]-ATF的RT_SVC的详解(runtime service)
  8. linux script 命令
  9. 检测代码区校验和实现简易反调试
  10. 2020-11-24(dll注入的N种搞法)