hibernate内置有一个c3p0,不用引入c3p0的jar包也行。


现在其实可以不用去创建表和实体类。因为hibernate可以自动帮我们生成。只要把映射建好了它就可以自动帮我们生成。


创建实体类和对应的映射。


一运行java项目hibernate3_day02的工具类/hibernate3_day02/src/cn/itcast/utils/HibernateUtils.java就可以生成表。前提是先建立数据库hibernate3_day02。必须得有数据库才行。





  1. package cn.itcast.hibernate3.demo1;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import org.hibernate.Session;
  6. import org.hibernate.Transaction;
  7. import org.junit.Test;
  8.  
  9. import cn.itcast.utils.HibernateUtils;
  10.  
  11. /**
  12. * Hibernate的测试类
  13. *
  14. * @author zhongzh
  15. *
  16. */
  17.  
  18. public class HIbernateTest1 {
  19.  
  20. @Test
  21. //区分持久化对象的三种状态:
  22. public void demo1() {
  23. // 1.创建Session
  24. Session session = HibernateUtils.openSession();
  25. // 2.开启事务
  26. Transaction tx = session.beginTransaction();
  27.  
  28. //往数据库去保存一本图书:
  29. Book book = new Book();//book是一个持久化对象,因为book有一个实体类已经
  30. //和我们的表建立起映射了 Book是一个持久化类 一new()就是瞬时态了
  31. //瞬时态: 没有唯一标识OID,没有与session关联.
  32. //刚new()出来,从数据库里面也不知道它是什么。它根本就没有OID,没有和session关联,是一个单独的
  33. //对象
  34. book.setName("Hibernate开发");
  35. book.setAuthor("孙XX");
  36. book.setPrice(65d);
  37.  
  38. session.save(book); //持久态 往数据库一存它就有OID了,而且是和session关联。
  39. //持久态: 有唯一标识OID,与session关联.
  40.  
  41. // 3.事务提交
  42. tx.commit();
  43. //4.释放资源
  44. session.close();
  45.  
  46. book.setName("Struts2开发"); //脱管态 session关闭了,book不与session关联了。
  47. //脱管态:有唯一的标识,没有与session关联.
  48. fail("Not yet implemented");
  49. }
  50.  
  51. }

find()不用记,是JPA提供的接口中的一个方法。那么hibernate肯定得有它的一个实现。get()、load()、find()、iterate()都是做查询的。

虽然这个状态图是官方给出来的,但是并不是十分的标准。有很多人认为,delete(book)之后也不是瞬时态的。delete(book)之后这个对象不是马上销毁的,只不过对应的数据库中的记录没有了。还有人认为,没有OID了,但是它还没有解除与session的关系。

官方给出的状态图不建议你直接获取脱管态对象。

day35 02-Hibernate持久化对象状态及状态转换的更多相关文章

  1. 1.1Hibernate持久化类和Hibernate持久化对象状态

    一.持久化对象po类 1.po定义 PO,是Persistent Object的缩写,是持久化类.PO是由PO=POJO+hbm映射配置组成. 2.通俗理解 PO类即持久化类,其实就是一个普通的Jav ...

  2. hibernate映射对象三种状态的分析

    一,首先hibernate中对象的状态有 三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate(). get().lo ...

  3. ORM进阶之Hibernate中对象的三大状态解析

    ORM进阶之 ORM简单介绍 ORM进阶之Hibernate简单介绍及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 在Hibernatea中每一 ...

  4. Hibernate持久化对象修改id重新保存的办法

    Hibernate持久化对象修改id重新保存的办法——Hibernate学习记录二 2017年11月10日 20:16:48 筱光 阅读数:1122   版权声明:本文为博主原创文章,未经博主允许不得 ...

  5. hibernate 持久化对象 save

    hibernate 持久化对象 save new出来的user对象是游离状态的对象,执行session.save()方法保存后,user对象就变为持久化了,持久化的对象跟数据库表双向绑定的意思, 对象 ...

  6. Hibernate持久化对象状态

    在Hibernate中,持久化对象再被操作过程中分为三个时期.这三个时期和session周期相关. 各自是瞬时(Transient),持久太(persistent)和游离态(Detached) 瞬时状 ...

  7. Hibernate持久化对象的三种状态深入理解

    关于OID hibernate缓存是一个map,他会根据OID作为缓存对象的key,我们的映射文件中<id>标签指定的属性值会作为OID 持久化对象的三种状态 为了方便理解,Hiberna ...

  8. hibernate 持久化对象的三个状态

    Hibernate中的对象有3种状态 瞬时对象(TransientObjects).持久化对象(PersistentObjects)和离线对象(DetachedObjects也叫做脱管对象) Tran ...

  9. 【SSH系列】-- Hibernate持久化对象的三种状态

    在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是 ...

  10. Hibernate持久化对象的状态

    1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态, 暂时状态, 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到还有一个状态 ...

随机推荐

  1. asp.net中异步调用webservice

    WebService方法是不需要作任何修改的,只是在调用时采用异步的方式,这样在循环中,速度会显得快一点. 原来的方式: HotelMagWeb.com.china_sms.www.MainServi ...

  2. 第一个DirectX程序include、lib设置问题

    1.fatal error LNK1104: cannot open file "d3d9.lib" 解决方案: (1)项目 -->属性 --> 配置属性 --> ...

  3. hdu 5236 Article(概率dp¥)

    Article Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent

    数据文件结构 Extent 在每一个数据文件内,MongoDB把所存储的BSON文档的数据和B树索引组织到逻辑容器“Extent”里面.如下图所示(my-db.1和my-db.2 是数据库的两个数据文 ...

  5. linux 日常使用命令

    ●安装和登录命令:login.shutdown.halt.reboot.mount.umount.chsh ●文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat ...

  6. PhotoShop使用指南(3)—— 将多张图片添加到图层

    第一步:选择文件菜单>脚本>将文件载入堆栈 第二步:点击浏览添加要批量载入的图片

  7. C++中关于strtok()函数的用法

    strtok: #include <string.h> char *strtok(char *str, const char *delim); char *strtok_r(char *s ...

  8. Chrome MarkDown Preview Plus

    /************************************************************************** * Chrome MarkDown Previe ...

  9. Spring转账业务_XML配置事物控制

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. New Year and Buggy Bot

    Bob programmed a robot to navigate through a 2d maze. The maze has some obstacles. Empty cells are d ...