hibernate的查询的比较
hibernate的查询有很多,Query,find,Criteria,get,load

query使用hsql语句,可以设置参数是常用的一种方式

criteria的方式,尽量避免了写hql语句,看起来更面向对象了。

find方式,这种方式已经被新的hibernate丢弃见这里
http://www.blogjava.net/dreamstone/archive/2007/07/28/133053.html

get和load方式是根据id取得一个记录
下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。

1,从返回结果上对比:
load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常
get方法检索不到的话会返回null

2,从检索执行机制上对比:
get方法和find方法都是直接从数据库中检索
而load方法的执行则比较复杂
1,首先查找session的persistent Context中是否有缓存,如果有则直接返回
2,如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常
3,如果是lazy则需要建立代理对象,对象的initialized属性为false,target属性为null
4, 在访问获得的代理对象的属性时,检索数据库,如果找到记录则把该记录的对象复制到代理对象的target
上,并将initialized=true,如果找不到就抛出异常 。

最新文章

  1. iOS开发之XCode设置--消除AFN的警告
  2. ecshop后台权限审核列表
  3. [JavaEE]如何唤醒Sleep中的线程
  4. android 入门-git之上传本地代码到github
  5. 2016C#模拟谷歌Google登陆Gmail&Youtube小案例
  6. weiapi2.2 HelpPage自动生成接口说明文档和接口测试功能
  7. 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
  8. Android文档资源大放送 感兴趣的话可以网盘下载(个人收集)
  9. [转]10款 Web 开发常备工具
  10. String、StringBuffer和StringBuilder区别及性能分析
  11. TortoiseGit HTTPS方式保存密码最简单的方法
  12. EasyUI--datebox设置默认时间
  13. 【SSH】---【Struts2、Hibernate5、Spring4】【SSH框架整合笔记 】
  14. c++(爬楼梯)
  15. Checked Exceptions
  16. siftflow-fcn32s训练及预测
  17. MySQL5.7: datetime
  18. 【Vue】中 $attrs 中的使用方法
  19. 核态获取PsLoadedModuleList地址的稳定方法
  20. JVM 堆内存和非堆内存

热门文章

  1. 基于Solr的多表join查询加速方法
  2. CBoard 看板参数管理
  3. [WebShow系列] 现场控制台操作方法
  4. centos6+如何对外开放80,3306端口号或者其他端口号
  5. Python + gevent模块对单个接口进行并发测试 1
  6. C++_标准模板库STL概念介绍5-其他库与总结
  7. LeetCode记录之20——Valid Parentheses
  8. 【算法笔记】B1041 考试座位号
  9. HDU_6298 Maximum Multiple 【找规律】
  10. java的Spring学习2- junit和mock