博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《精通 Hibernate》学习笔记
阅读量:6579 次
发布时间:2019-06-24

本文共 1321 字,大约阅读时间需要 4 分钟。

第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)选择合适的缓存插件,每一种缓存插件都有自带的配置文件,需要手工配置。

转载地址:http://cxbno.baihongyu.com/

你可能感兴趣的文章
使用Sublime Text搭建python调试环境[转]
查看>>
30. Substring with Concatenation of All Words
查看>>
FB面经prepare: Task Schedule
查看>>
使用SpringSecurity3用户验证(异常信息,验证码)
查看>>
JSON与XML的区别比较(转)
查看>>
StrongLoop
查看>>
监听turtlesim仿真器,发送数据到实际的机器人--20
查看>>
函数式编程
查看>>
php运行
查看>>
Grunt 之通配符
查看>>
探秘Tomcat——连接器和容器的优雅启动
查看>>
spring mvc 4 校验
查看>>
关于socket——SO_SNDBUF and SO_RECVBUF
查看>>
【Coursera】Security Introduction -Ninth Week(1)
查看>>
Python语言Web开发框架web2py
查看>>
妙用 `package.json` 快速 `import` 文件(夹)
查看>>
ASP.NET MVC的切片(Section)脚本(script)
查看>>
嵌入式开发之hi3516---GV7601 SPI通信问题
查看>>
编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存)
查看>>
Swift 同构与异构
查看>>