一.对象的三种状态 1.暂时态:当对象刚创建,和Session没有发生任何关系时,当程序运行完就即刻消失,被称为暂时态. 2.持久态:当执行如下代码时,对象变为持久态 Emp e = new Emp(); session.save(); 持久态的对象和Session发生了关系,如执行了save,get,query等方法 Session中会缓存该对象(Session的缓存叫一级缓存) Session再获取对象时,首先去查找一级缓存,如果没有才查询数据库 Session要负责将持久态对象的变化更新到…
关于如何手动创建Hibernate,Hibernate初了解已经介绍了,接下来了解持久化对象和一级缓存. Hibernate的持久化类有三种状态: 1.Transient瞬时态:持久化对象没有唯一标识OID,没有纳入Session的管理. 2.Persistent持久态:持久化对象有唯一标识OID,已经纳入到Session的管理,另外,持久化具有自动更新数据库的特点 3.Detached脱管态:持久化对象有唯一标识OID,没有纳入到Session管理. 下面给出一段代码来区分这三种状态: //…
 Hibernate的持久化类 什么是持久化类        1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类.        * 持久化类 = JavaBean + xxx.hbm.xml     持久化类的编写规则        1. 提供一个无参数 public访问控制符的构造器                -- 底层需要进行反射.    2. 提供一个标识属性,映射数据表主键字段                  …
一.一级缓存和快照 什么是一级缓存呢? 很简单,每次hibernate跟数据库打交道时,都是通过session来对要操作的对象取得关联,然后在进行操作,那么具体的过程是什么样的呢? 1.首先session将一个对象加入自己的管理范围内,其实也就是把该对象放入自己的一级缓存中,例如,session.save(xxx):这个语句就是将xxx保存在自己的一级缓存中,等待事务提交后,hibernate才真正的发sql语句,对数据库进行操作.注意:session进行操作的时候,是将对象加入自己的一级缓存,…
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种持久化对象的状态 持久化类:就是一个实体类与数据库表建立了映射 Hibernate为了方便管理持久化类,将持久化类分成了三种状态 瞬时态(临时态):transient 持久态:persistent 脱管态(离线态):detached Transient(瞬时态) 特点:持久化对象没有唯一标识OID.…
HQL:完全面向对象查询 SQL的执行顺序: 1.From 2.Where 过滤基础数据 where与having的区别:1.顺序不同 2.where过滤基础数据 3. 过滤聚合函数 3.Group by 4.Select 5.Having 6.Order by   使用Hibernate查询时,使用hibernate的一个接口query Hql是面向对象的查询语句,所以跟的是类名 Query query = session.createQuery("select id,name,stu.cla…
第二天,我们先来了解一下框架里的一个重要概念:实体类 实体类:把数据表或其它持久化数据的格式映射成的类,就是实体类. 实体类的编写规则:由于对应的是javabean,因而也遵循javabean的一些规范 定义私有的成员变量 通过set/get方法对成员变量进行读写操作 实体类独有的特性:有属性值作为唯一值(一般为id) 建议不要使用基本数据类型而是使用它们的包装类,理由是例如要区分0分与没有参加考试,int类型难以区分, 而包装类Integer可以使用0与Null进行区分 讲到实体类,我们再对第…
知识点2: session概述 Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口,它提供了基本的保存,更新, 删除和加载Java对象的方法. 知识点3:理解session的缓存 在 Session 接口的实现中包含一系列的 Java 集合, 这些Java集合构成了 Session缓存.只要Session 实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期 当session的save()方法持久化一个对象时,该对象被载入缓存,以后即使程序中不再引用该…
一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更高.下边具体说一下get和load的不同,有些时候为了对照也会把find加进来. 1.从返回结果上对照: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索运行机制上对照: get方法和fin…
一 hibernate中的实体规则 1.1 实体类创建的注意事项 持久化类提供无参数构造         --在调用instance()方法时默认调用空参构造 成员变量私有,提供共有get/set方法访问.需提供属性   ---Private String name 不叫属性 叫成员变量   --Get和set方法才叫属性 持久化类中的属性,应尽量使用包装类型 持久化类需要提供oid.与数据库中的主键列对应  --没有主键是无法到hibernate里面的 不要用final修饰class     …