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的持久化类状态的更多相关文章

  1. java框架之Hibernate(2)-持久化类&主键生成策略&缓存&事务&查询

    持久化类 概述 持久化:将内存中的对象持久化到数据库中的过程就是持久化.Hibernate 就是用来进行持久化的框架. 持久化类:一个 Java 对象与数据库的表建立了映射关系,那么这个类在 Hibe ...

  2. hibernate的持久化类、主键生成策略

    一.hibernate的持久化类 1.什么是持久化类: 持久化:将数据存储到关系型数据库. 持久化类:与数据库中的数据表建立了某种关系的java类.(持久化类=javabean+映射配置文件) 2.持 ...

  3. 【Hibernate】持久化对象状态及以及缓存

    一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种 ...

  4. 三、hibernate中持久化类的使用

    hibernate的持久化类 持久化:将内存中的一个对象持久化到数据库中的过程,hibernate就是一个用来进行持久化的框架 持久化类:一个Java对象与数据库中表建立了关系映射,那么这个类在hib ...

  5. Hibernate学习——持久化类的学习

    A.概念 持久化:将内存中的对象持久化(存储)到数据库的过程.Hibernate就是持久化的框架. 持久化类:一个普通java对象与数据库的表建立了映射关系,那么这个类在Hiberna中被称为持久化类 ...

  6. Hibernate中持久化类与持久化对象

    1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...

  7. 笔记:Hibernate 持久化类标注说明

    持久化类标注 标注 @Entity:注解声明该类是一个Hibernate的持久化类 标注 @Table:指定该类映射的表 参数 name:指定映射数据库表的名称 参数 uniqueConstraint ...

  8. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

  9. Hibernate的持久化对象

     Hibernate的持久化类 什么是持久化类        1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类.        * ...

随机推荐

  1. Python:IDLE清屏

    清屏很简单,为IDLE增加一个清屏的扩展ClearWindow即可. 首先下载clearwindow.py(点击可直接下载,不能下载的可以右键保存,格式为py结尾), 将这个文件放到Python安装目 ...

  2. zsh 通信脚本

    server #!/bin/zsh #zsh TCP server script zmodload zsh/net/tcp #listening port ztcp -l #This is a fil ...

  3. plsql客户端显示菜单等

    不小心把plsql的左边的都关了,如图 菜单条---工具---浏览器. 即可.

  4. NYOJ之XX和OO

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAI0CAIAAABgWyN9AAAgAElEQVR4nO3dPW7jyt4n4NmEcy/EaW

  5. stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间

    [root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...

  6. location url 反向代理到来机的其它端口 gitlab

    location /nexus { proxy_pass http://127.0.0.1:8081/nexus; } [root@GitMaven conf]# pwd /var/opt/gitla ...

  7. 数据结构和算法 – 6.构建字典: DictionaryBase 类和 SortedList 类

      6.1.DictionaryBase 类的基础方法和属性 大家可以把字典数据结构看成是一种计算机化的词典.要查找的词就是关键字,而词的定义就是值. DictionaryBase 类是一种用作专有字 ...

  8. Java内存泄露的理解与解决

    依赖于引用判断的内存管理机制 Java中对内存对象的访问,使用的是引用的方式.在Java代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间.在Ja ...

  9. Bootstrap简介

    接下来的一段时间,想研究一下现有的网页框架,第一个不容错过的就是Bootstrap,Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CS ...

  10. elasticsearch入门

    到 https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.zip 下载最新包: 启动: ./elast ...