《精通 Hibernate》学习笔记

第17章.Hibernate的检索方式
1.HQL检索方式
采用HQL检索时,需要定义字符串形式的HQL查询语句。
2.QBC检索方式
QBCAPI由org.hibernate.Criteria接口,org.hibernate.criterion.Criterion接口
和org.hibernate.Restrictions类组成,支持运行时动态生成查询语句。
创建Criteria对象;通过Restrictions设定Criterion条件;

调用list()方法执行查询。
3.使用别名
检索一个持久化类的所有实例。

//采用HQL检索方式
List result=session.createQuery("from Customer").list();
//采用QBC方式
List result=session.createCriteria(Customer.class).list();

4.多态查询
查询出当前类及所有子类的实例。
5.对查询结果排序,以及分页查询
6.检索单个对象
7.可滚动的结果集

第22章.Hibernate的缓存
1.持久化层缓存的范围决定了缓存的生命周期以及能被谁访问。可以分为事务范围 进程范围和集群范围。
事务范围的缓存是持久化层的第一级缓存,通常是必须的,进程范围或集群范围是第二级缓存,通常是可选的。
2.当两个并发的事务同时访问持久化层的同一数据缓存时,也有可能出现各类缓存问题。

3.第二级缓存可以设置几种缓存隔离策略:事务型,读写型,非严格读写型,只读型。
事务隔离级别越高,并发性能就越低。
符合以下条件的数据可以放到第二级缓存中:
很少被修改的数据;
不是很重要的数据;
不会被并发访问的数据;
参考数据;

 

4.Hibernate 提供两级缓存,第一级缓存是session级的缓存,
第二级缓存是一个可插拔的缓存插件,由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个进程对应,因此第二级缓存是进程范围或者集群范围的缓存。
缓存适配器(Cache Provider) 由于把具体的缓存实现软件与Hibernate集成。
Hibernate 还为查询结果提供了一个查询缓存,它依赖于第二级缓存。

 

5.当应用程序调用Session的save()/update()/saveorupdate()/load()/或get()方法,以及调用Query查询接口的list()/
iterate()或filter()方法时。如果在session的缓存中还存在相应的对象,Hibernate就会把该对象加入到第一级缓存中,当清理缓存时,Hibernate会根据缓存中对象的状态来同步更新数据库。
Session提供了两个方法,但多数情况并不提倡使用。
evict(Object 0 );从缓存中清除参数指定的持久化对象。
clear();清空缓存中所有持久化对象。

 

6.配置二级缓存主要包含以下步骤:
(1)选择需要使用第二级缓存的持久化类,设置它的第二级缓存的并发访问策略。
(2)选择合适的缓存插件,每一种缓存插件都有自带的配置文件,需要手工配置。

时间: 2025-01-20 09:35:01

《精通 Hibernate》学习笔记的相关文章

我的hibernate学习笔记(之三)

 五.Hibernate 主键策略( 上面的步骤三的一部分)       <id><generator class="主键策略" /></id>       主键:在关系数据库中,主键用来标识记录并保证每条记录的唯一性( 一般可保证全数据库唯一) .必须满足以下条件:          1)不允许为空.          2)不允许主键值重复.          3)主键值不允许改变.      1.自然主键:以有业务含义的字段为主键,称为自然主键.

hibernate学习笔记(一)属性映射和关联关系映射

 Hibernate的小小映射 Hibernate的映射本人给分为两种,一个是简单属性的映射,一个相对复杂属性的映射,复杂属性指的是set  list  map等. 简单的映射:(只列举一些常见的属性和常用的配置方法) Private String name; Private int gender; Private Date birthday; Private byte[] photo; Private String desc;  //description 的简写 对应的hibernate的映

hibernate学习笔记(三)

hibernate的一些杂记:1.sessionFactory的用法:SessionFactory是线程安全的,构造 SessionFactory 很消耗资源sessionFactory = new Configuration().configure().addClass(**).addClass(**).buildSessionFactory();Session session = sessionFactory.openSession();在这里addClass的好处是不需要在hibernat

Hibernate学习笔记之基本配置详解

1.下载页面 http://in.relation.to/Bloggers/HibernateORM422FinalReleased 2.解压hibernate,将lib目录下面的required目录下所有的jar包拷贝到我们的应用中的类加载路径,如果是web应用,放在/WEB-INF/lib/ 下面 3.如果需要用到数据库源那么将c3p0也放在/WEB-INF/lib/ 下面 4.创建一个持久化的类.这个类的实例将会被hibernate映射到数据库中对应的实例:  代码如下 复制代码 pack

SQL Server学习笔记

<SQL Server从入门到精通>学习笔记 1 数据管理技术的三个阶段:人工管理.文件系统.数据库系统. 2 数据库的组成:数据库.数据库管理系统.数据库管理员.硬件平台.软件平台5部分. 3 数据库的三级模式:内模式.模式.外模式. 4 三级模式之间的映射:外模式/模式,模式/内模式. 5 常用的数据库数据模型:层次模型.网状模型.关系模型. 6 关系数据库的规范化: (1)1NF:原子性,字段不可分. (2)2NF:唯一性,有主键,非主键关键字依赖于主键. (3)3NF:去除传递依赖(非

SSH整合学习笔记之spring与hibernate简单整合.doc

SSH整合学习笔记 大致的学习了一下struts1.x struts2.x  spring2.5 hibernate3.6,觉得东西很多,好些东西都记不住,最后发现想记住的方法就是多练习.自己多写一下简单的工程也会把这些知识巩固,但是公司现在不用这个,所以只能记下笔记,不忙的时候再拿来看看,坚持的练习一下.我也是初学,所以只是记下一些基础的东西,如果写错了什么,请朋友多多指出. 个人对SSH的理解也不算深入,只是大概的学完一圈觉得spring很强大,有的人觉得spring很难学,但是我觉得str

SSH整合学习笔记之spring与hibernate整合(二)--C3P0

SSH整合学习笔记 现在将之前的spring与hibernate整合修改一下,使用C3P0数据库连接池.基本的配置没有改变,只是增加了一个jdbc.properties文件和修改了applicationContext.xml和hibernate.cfg.xml文件的相关配置. jdbc.properties jdbcUrl= jdbc:mysql:///spring2hibernate driverClass = com.mysql.jdbc.Driver username = root pas

hibernate3.0学习笔记

hibernate3学习笔记(二十三)|进阶特性(三) hibernate3学习笔记(二十三)|进阶特性(二) hibernate3学习笔记(二十三)|进阶特性(一) hibernate3学习笔记(二十二)|Query缓存机制 hibernate3学习笔记(二十一)|二级缓存 hibernate3学习笔记(二十)|关系映射:多对多 hibernate3学习笔记(十九)|关系映射:一对一 hibernate3学习笔记(十八)|关系映射:一对多 hibernate3学习笔记(十七)|关系映射:多对一

Bash学习笔记

                                                                          第1 页        共28页 Bash shell学习笔记 .........................................................................................................................2 1. 引言................

spring学习笔记(13)基于Schema配置AOP详解

基于Schema配置入门实例 除了基于@AspectJ注解的形式来实现AOP外,我们还可以在IOC容器中配置.先来看看一个常见的应用场景,在我们的web项目中,我们需要为service层配置事务,传统的做法是在每个业务逻辑方法重复下面配置中: Created with Raphaël 2.1.0程序开始1. 获取DAO层封装好的数据库查询API,如HIbernate中的SessionFactory/Session和mybatis中的xxxMapper2. 开启事务3. 根据入参查询数据库完成相应