Hibernate的检索策略可以分为类级别的检索策略和关联级别的检索策略。
类级别可选的检索策略包括:立即加载和延迟加载,在类级别上,hibernate默认的检索策略为延迟加载,即lazy=ture
类级别的load检索策略:
立即加载:
Customer customer = (Customer)session.load(Customer.class,new Long(1));
当上面一条语句执行到时,hibernate会立即输出以下语句:
select * from customers where id = 1;
这个时候customer就已经实例化了。
延迟加载:
Customer customer = (Customer)session.load(Customer.class,new Long(1));
上面语句执行到时hibernate不会立即查询customer表,而是返回customer类的代理类的实例。
这个代理类有以下的特征:
1)Hibernate在运行时动态生成,它扩展了customer类,因此它继承了customer的所有属性和方法,但是它的实现对于应用程序是透明的。
2)当hibernate创建customer代理类实例时,仅仅初始化了它的OID,其他属性都为null,因此这个代理类占用的内存很少。
3)当程序第一次访问代理类的实例时,hibernate会初始化代理类实例,这时才真正区数据库查询。但是如果仅仅是方位代理类的getId(),hibernate仍然不会区访问数据库。
以上讨论的是类级别load的检索策略,如果是使用session的get 和 find接口进行数据查询的话不关class的检索策略设置为什么都会使用立即检索策略。
如果使用load进行查询(不关是立即加载还是延迟加载),都会生成customer的代理类实例,这样我们在判断customer==null时就一定为false,而不能准确的知道数据库中是否存在这样的实例。
(不推荐使用load,用起来麻烦)
关联级别的检索策略
关联级别的检索策略分为立即检索(默认的检索方式)、延迟检索和outer-join检索
batch-size的使用
在进行立即检索的时候,例如使用如下的sql语句:select * from customer;会立即去加载customer所关联的order对象,并且会产生多条select 语句,一个customer执行一次,而如果使用batch-size属性,会一次加载多条customer的order list,这样就会减少和数据库的交互。同样,在进行延迟加载的时候也会出现这样的问题。
fetch 和 lazy 主要是用来级联查询的, 而 cascade 和 inverse 主要是用来级联插入和修改的
分享到:
相关推荐
介绍了HIBERNATE的检索策略,可以此作为指引进行学习
Hibernate的检索策略包括类级别检索策略和关联级别检索策略。
hibernate5--4.检索方式及策略
学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 ...8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)
hibernate3数据检索、抓取策略 、 注解的使用
hibernate的类级别检索策略和检索策略的lazy、fetch、batch-size属性使用
Hibernate框架知识点的梳理;对HQL检索、检索策略、以及如何配置详细的进行描述
16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多和多对多关联的检索策略 16.3.1 立即检索(lazy属性为“false”) 16.3.2 延迟检索(lazy属性为...
Hibernate入门 OR映射技术 通过Hibernate API操纵数据库 检索策略和方式 数据库事务、并发、缓存与性能优化 高级配置。
一份我在厦门邦初学习 的快速入门ppt 内容有: 对象持久化基础知识 Hibernate应用开发基础 ...Hibernate的检索策略 Hibernate检索数据的方式 数据库事务与并发处理 组件及组成关系映射 综合项目应用:Struts+Hibernater
高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一\二级缓存、...
内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射、检索策略、检索方式、Hibernate 一\二级缓存、管理 Session、批量处理等 Hibernate 企业级开发的核心技术。
文档内容包括:Hibernate入门、OR映射技术、通过Hibernate API操纵数据库、检索策略和方式、数据库事务、并发、缓存与性能优化、高级配置
高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...
hibernate入门与概述。介绍对象-关系 映射基础,映射对象标识符,映射一对多关联关系,操纵持久化对象,hibernate的检索策略。
Hibernate入门 OR映射技术 通过Hibernate API操纵数据库 检索策略和方式 数据库事务、并发、缓存与性能优化 高级配置