Hibernate(十一)检索】的更多相关文章

一.Hibernate检索策略 二.检索方法 三.get和load比较 get和load的区别:  get不支持延迟加载,而load支持.  当查询特定的数据库中不存在的数据时,get会返回null,而load则抛出异常.  类(Class)的延迟加载: 设置<class>标签中的lazy="true",或是保持默认(即不配置lazy属性) 如果lazy的属性值为true,那么在使用load方法加载数据时,只有确实用到数据的时候才会发出sql语句:这样有可能减少系统的开销.…
Hibernate的检索方式 检索方式(查询的方式) 导航对象图检索方式: 根据已经加载的对象导航到其他对象 Customer customer = (Customer)session.get(Customer.class,1); customer.getOrders();// 获得到客户的订单 OID 检索方式: 按照对象的 OID 来检索对象 get()/load();方法进行检索. HQL 检索方式: 使用面向对象的 HQL 查询语言 Query query = session.creat…
本文依旧以Customer类和Order类进行说明.一.引言: Hibernate检索Customer对象时立即检索与之关联的Order对象,这种检索策略为立即检索策略.立即检索策略存在两大不足: A.select语句太多,而且会出现N+1的问题.所谓N+1,1是指先查出所有的Customer集合,N是指针对每个Customer再查询其关联的Order集合.N+1可以通过一条外连接查询语句完成. B.应用逻辑上可能并不需要Order集合,此时加载Order集合浪费内存空间. 为解决上述问题,Hi…
Hibernate提供了以下几种检索对象的方式: A.导航对象图检索方式. B.OID检索方式.Session.get() load(); C.HQL检索方式.Query. D.QBC检索方式.Query By Criteria. E.本地SQL检索方式. 一.HQL检索方式:Hibernate Query Language HQL是面向对象的查询语言.它包含以下功能: 1.在查询语句中设定各种查询条件. 2.支持投影查询,即仅检索出对象的部分属性. 3.支持分页查询. 4.支持连接查询. 5.…
本节介绍HQL和QBC的高级用法:各种连接查询.投影查询.报表查询.动态查询.集合过滤和子查询等.另外将归纳优化查询程序代码,从而提高查询性能的各种技巧.一.连接查询: HQL与QBC支持的各种连接类型: 在程序中指定的连接查询类型 HQL语法 QBC语法 适用范围 内连接 inner join或者join Criteria.createAlias() 适用于有关联关系的持久化类,并且在映射文件中对这种关联关系做了映射 迫切内连接 inner join fetch或者join fetch 不支持…
hibernate 的中的session依照load()和get()按照参数的制定OID(ObjctID)去加载一个持久化对象.另外Query.list()方法则按照HQL语句去加载持久化的对象. 以上的几个方式都可以实现hibernate的持久化对象的加载.如果有不懂hibernate对象的"临时状态"."游离态"."持久态"."删除状态"的小伙伴,自己先去了解下. 对于hibernate的以上的几种检索策略,我们先来了解下…
Hibernate 提供了以下几种检索对象的方式1导航对象图检索方式: 根据已经加载的对象导航到其他对象(根据已经加载的对象,导航到其他对象-例如一对多的查询)2OID 检索方式: 按照对象的 OID 来检索对象(更具ID查询---find(Id).get(),load())3HQL 检索方式: 使用面向对象的 HQL 查询语言4QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接…
Hibernate框架对检索进行了优化,前面我们将CURD的时候提到了load和get的区别,当时仅仅说了load为延迟加载,get为立即加载,当检索的记录为空的时候load报错(不是在执行load方法的时候报的错,是执行后面的操作报的错),get返回null. 其实load就是对检索的一种优化,它的作用是当程序执行检索代码的时候,在缓存中没有的前提下,不会立即去数据库中查询,而是等真正用到的时候才会去查询,这是一种懒加载策略. 下面我们要讲的内容有: 当前对象的检索优化 关联对象的检索优化 当…
一.检索策略概述 当我们实现了一对多或者多对多的映射后,在检索数据库时需要注意两个问题: 1.使用尽可能小的内存:当 Hibernate 从数据库中加载一个客户信息时, 如果同时加载所有关联这个客户的订单信息, 而程序实际上仅仅需要访问客户信息, 那么这些关联的 订单信息就白白浪费了许多内存. 2.更高的查询效率:发送尽可能少的 SQL 语句. 二.类级别的检索策略(class标签中设置) 类级别可选的检索策略包括立即检索和延迟检索, Hibernate默认采用延迟检索. 类级别的检索策略可以通…
一.概述 二.HQL 2.1 简介 2.2 查询所有记录 2.3 查询使用别名 2.4 排序 2.5 分页查询 2.6 单个对象查询 2.7 参数绑定 2.8 投影操作 2.9 模糊查询 2.10 SQL多表查询 2.11 HQL多表的查询 三.QBC 3.1 简介 3.2 查询所有记录 3.3 排序 3.4分页 3.5获取单个对象 3.6 带参数的查询 3.7 模糊查询 四.SQL 4.1 简介 4.2 SQL语句查询所有记录 一.概述 检索方式:查询的方式 导航对象图检索方式: 根据已经加载…