Hibernate-ORM:06.Hibernate中三种状态

 

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

 

 

本篇博客主要叙述Hibernate中的三种状态临时状态(瞬时状态),持久状态游离状态

commitflush三种状态间使用,commit和flush的区别

saveOrUpdatemerge三种状态间的使用saveOrUpdate和merge的区别

前方标注一下,用的是mysql数据库,主键生成策略是increment

 

一,Hibernate-ORM的对象的三种状态

  * Hibernate对象的三种状态
  * 1.临时状态(瞬时态)(临时态,自由态)
  * 我们通过new关键字创建出一个类的实例对象, 这个对象和hibernate没有任何关系
  * 2.持久状态
  * 对象被session管理。就会产生一个OID(主键标识符)这个对象和hibernate有关系
  * 3.游离状态(托管态)
  * 曾经被session管理过有OID

  *和瞬时态的区别在于,是否存在OID!

  大话一下:临时状态就是没有关系,就像你和大街上任意一个女孩没有关系,持久状态就是你和她有了联系(男女朋友,结婚),游离状态就是已经分手了(但是有过曾经)

 

二,一张图揭秘如何进入各个状态的方法

    

Hibernate-ORM:06.Hibernate中三种状态

 

 

三,各个状态的小案例

 

@Test /*简单写一下三种状态,和根据这个increment主键生成策咯生成记录 * * ---------------------------------- Hibernate: select max(tid) from Teacher ---------------------------------- Hibernate: insert into Teacher (name, tid) values (?, ?) * */ public void t01ThreeStatus01(){ System.out.println("----------------------------------"); Teacher teacher=new Teacher("孟六爱自由");//临时状态(瞬时状态) session.save(teacher);//持久状态 System.out.println("----------------------------------"); tr.commit(); session.evict(teacher);//游离状态 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwgfw.html