Hibernate的查询方式.doc_第1页
Hibernate的查询方式.doc_第2页
Hibernate的查询方式.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Sql、Criteria,object comptositionHql:1、 属性查询2、 参数查询、命名参数查询3、 关联查询4、 分页查询5、 统计函数6 如何优化Hibernate?1.使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集合缓存5.一对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰1.Hibernate有哪几种查询数据的方式 (1)导航对象图查询 (2)OID查询 (3)HQL (4)QBC (5)本地SQL2.load()和get()的区别load加载方法:Java代码Users user = (Users)session.load(Users.class, userId);Users user = (Users)session.load(Users.class, userId);get加载方法:Java代码Users user = (Users)session.get(Users.class, userId);Users user = (Users)session.get(Users.class, userId);两加载方法区别:区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;区别2:load支持延迟加载,get不支持延迟加载。也就是说:Java代码Users user = (Users)session.load(Users.class, userId);Users user = (Users)session.load(Users.class, userId);这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。而:Java代码Users user = (Users)session.get(Users.class, userId);Users user = (Users)session.get(Users.class, userId);则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。注意:Java代码Users user = (Users)session.load(Users.class, userId); System.out.println(user.getId();Users user = (Users)session.load(Users.class, userId);System.out.println(user.getId();上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是use

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论