hibernate对象的状态分为三种:  游离状态,持久化状态,瞬时状态

下面一行代码区分:

 

   Configuration   cfg=new Configuration().configure();

   SessionFactory sessionFactory=cfg.buildSessionFactory();

   Session session=sessionFactory.openSession();

   Transaction    tx=session.beginTransaction();

   Person p=new Person ();  //  瞬时状态  ,没有id  ,没有与session关联

   p.setName("zhangsan");

   p.setAge(13);

   p.setSex("男”);

   session.save(p); // 持久化状态   有id值  ,与session有关联

   tx.commit();

   session.close(); // 游离 或托管状态   ,有id  和session无关联

  

save () 方法:不能理解成保存,  理解成 将瞬时状态转换成持久状态的方法

主键自增:在执行save方法时为了将对象转化为持久化状态,必须生成id值   ,必须执行insert值

increament :执行save方法  ,为了生成id,会执行select  语句查询最大id值

hibernate主配置 设置      显示sql  语句,   规范sql语句;

下面操作来验证  :

    在session处设置断点

   1.当 orm元数据配置中的主键生成策略为  navtive   (自动递增  /数据库中操作 )

   执行该断点代码 ,控制台出现   insert into   person  (name ,age ,sex)  values(?,?,?);   // id的添加由数据库操作

   2.当  主键生成策略改为  increament  (先在数据库查询最大值 ,最大值id+1    //  hibernate 操作)

   执行该断点代码  session.save()    控制台出现 select  *  from max(id)   from   person

 持久化特点

 测试类 方法fn2() 部分代码:

  Person p=session.get(Person.class ,1 );  //持久化状态

  p.setName("李四");

  tx.commit();

  session.close(); // 游离状态

 

执行控制台出现

  select    *   from   person   where id=1  ;

  update person set   name=?

 

以上情景表示 :

持久化对象的特点:  持久化对象的任何变化 都 会自动同步到数据库中

提问 那更新操作中的 update 方法有什么作用  :       把对象从游离状态转换为持久化状态

  

hibernate学习(三) hibernate中的对象状态的更多相关文章

  1. Hibernate框架学习(三)——实体规则、对象状态、一级缓存

    一.Hibernate中的实体规则 1.实体类创建的注意事项 1)持久化类提供无参数构造,因为在Hibernate的底层需要使用反射生成类的实例. 2)成员变量私有,提供公有的get和set方法,需提 ...

  2. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  3. JavaScript学习12 JS中定义对象的几种方式【转】

    avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...

  4. 【Java EE 学习 45】【Hibernate学习第二天】【对象的三种状态】【一对多关系的操作】

    一.对象的三种状态. 1.对象有三种状态:持久化状态.临时状态.脱管状态(游离状态) 2.Session的特定方法能使得一个对象从一个状态转换到另外一个状态. 3.三种状态的说明 (1)临时状态:临时 ...

  5. [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Hibernate学习之hibernate状态

    hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就 ...

  7. Hibernate学习5—Hibernate操作对象

    第一节:Hibernate 中四种对象状态 删除状态:处于删除状态的Java 对象被称为删除对象.比如说session delete一个对象,这个对象就不处于session缓存中了, 已经从sessi ...

  8. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  9. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

随机推荐

  1. 序列化与transient

    满足下面四个条件中的一个的类就不应该被序列化:  1.一个类与本地代码(native code)有紧密的关系,如java.util.zip.Deflater,这个类中很多都是native的. 2.对象 ...

  2. SSH 面试题集锦

    1.  BeanFactory的作用是什么?   [中] BeanFactory是配置.创建.管理bean的容器,有时候也称为bean上下文.Bean与bean的依赖关系,也是由BeanFactory ...

  3. js中如何处理大量有规律的变量

    var a1=document.getElementById('a1'); var a1=document.getElementById('a2'); var a1=document.getEleme ...

  4. BZOJ 4710: [Jsoi2011]分特产 [容斥原理]

    4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少 ...

  5. ------- 软件调试——注销 QQ 过滤驱动设置的事件通知 CallBack (完)-------

    ---------------------------------------------------------------------------------- 本系列的最后一篇演示如何通过调试手 ...

  6. 数据分析之pandas教程-----概念篇

    目录 1  pandas基本概念 1.1  pandas数据结构剖析 1.1.1  Series 1.1.2  DataFrame 1.1.3  索引 1.1.4  pandas基本操作 1.1.4. ...

  7. Apache、Lighttpd、Nginx 三种web服务器对比

    简介 1.    Apache Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.Apac ...

  8. 关于目前自己iOS项目使用的第三方开源库

    1.AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理. 2.FMDB 对sqlite数据库操作进行了封装,demo也比较简单. ...

  9. 使用VIM将文件的其中的连续几行注释删除或者给其中的连续几行添加注释

    一.使用VIM将文件的其中的连续几行注释删除 1.用VIM打开一个文件,比如打开sshd_config文件,以该文件的下面几行为例: #vim  sshd_config 2.此时,按ctrl+v键,使 ...

  10. Java经典编程题50道之三十四

    输入3个数a,b,c,按大小顺序输出. public class Example34 {    public static void main(String[] args) {        sort ...