- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate查询?首先介绍get()和load()方法的区别:?get()方法和load()方法的区别主要在于对二级缓存的使用上。?load()方法会使用二级缓存,而get()方法在一级缓存没有找到会直接查询数据库,不会去二级缓存中查找。?get():如果在数据库中没有记录会返回空,get()无论如何都会返回数据.?
load():如果数据库中没有记录会抛出异常,如果有数据返回的是一个代理对象。?
get()方法默认不支持lazy(延迟加载)功能,而load支持延迟加载get()方法在查询不到数据时,返回null,而load因为支持延迟加载,只有在使用对象时才加载,所以如果数据库中不在数据load会抛出异常(org.hibernate.ObjectNotFoundException)。get()和load()只根据主键查询,不能根据其它字段查询,如果想根据非主键查询,可以使用HQL
list和iterator()方法之间的区别:(N+1?)?list()方法在执行时,直接运行查询结果所需要的查询语句。?iterator()方法则是先执行得到对象ID的查询,然后在根据每个ID值去取得所要查询的对象。?因此:对于list()方式的查询通常只会执行一个SQL语句,而对于iterator()方法的查询则可能需要执行N+1条SQL语句(N为结果集中的记录数).?结果集的处理方法不同:?list()方法会一次活的所有的结果集对象,而且他会依据查询的结果初始化所有的结果集对象。如果在结果集非常庞大的时候会占据非常多的内存,甚至会造成内存溢出的情况发生。?iterator()方法在执行时不会一次初始化所有的对象,而是根据对结果集的访问情况来初始化对象。一次在访问中可以控制缓存中对象的数量,以避免占用过多的缓存,导致内存溢出情况的发生。?HQL:HQL是一种面向对象的查询语言,HQL的操作对象是类、实例和属性等。?SQL:sql的操作对象是数据表和列等数据对象。?Hql是完全面向对象的查询语言,因此可以支持继承和多条等特征。?HQL查询依赖于Query类,每个Query实例对应一个查询对象。?定参数的功能,Query 接口才是真正的HQL查询接口。?//创建一个Query 对象?
Java代码??
Query?query?=?session.createQuery?(from?Customer?as?c?where?=:customerName?and?c.age=:customerAge);??
//动态绑定参数?
Java代码??
query.setString(customerName,Tom);??
query.setInteger(customerAge,21);??
//执行查询语句,返回结果?
Java代码??
List?result?=?query.list();??
HQL查询步骤:?1:获取Hibernate Session对象。?2:编写HQL语句。?3:以HQL语句作为参数,调用Session的createQuery方法创建查询对象。?4:如果HQL语句包含参数,调用Query的setXXX()方法为参数赋值。?5: 调用Query对象的list等方法遍历查询结果。?Query还包含两个方法:?
Java代码??
setFirstResult(int?firstResult)://设置返回的结果集从第几条记录开始。??
setMaxResults(int?maxResults)://设置本次查询返回的结果数。??
实体的删除和更新。?投影查询:只查询属性的一部分。??? 查询一个属性返回的是字符串??? 查询二个字段返回的是数组?动态构造查询:主要用于几十个表查询;??????? 要构建一个新的对象,要加上一个构造函数;?? 在new对象的时候要加上包名?不要使用count(*) 要count(持久化对象)?分组与排序:?Order by子句可以通过asc或desc关键字排序????? 如:?
Java代码??
form?User?u?Order?by??asc,u.age?desc;??
Group by子句与统计查询:?如:?
Java代码??
String?hql?=?select?count(u),u.age?from?User?u?group?by?u.age?having?count(u)10;??
?List?list?=?session.createQuery(hql).list();??
标准的SQL聚合函数都可以在HQL语句中使用,比如:count(),sum(),max(),min(),age()等?连接查
您可能关注的文档
- 2第二章化学键和分子结构 - 副本.ppt
- Excel VBA——如何保护好您VBA作品!!.doc
- Excel 数据区域或表中数据进行排序.doc
- EXCEL操作指南--频数分布表与统计图.doc
- 2机构组成2010.ppt
- 02计算机中数据信息表示.ppt
- fast paxos算法和zookeeper leader选举源代码分析.doc
- Fiejrew制造业工厂常用英文和缩写词汇大全.doc
- 02-细胞统一性和多样性.ppt
- flash第三章阴影小球与阴影文字教案.doc
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)