1、hibernate中get方法和load方法的根本区别在于:如果你使用load方法,hibernate认

为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可

以放心的使用代理来延迟加载该对象。但是万一数据库中不存在该记录,那就只能抛异常了

,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而

不是在创建这个对象时。在load时会先查一下session缓存看看该id对应的对象是否存在,

不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方

法来实现延迟加载。对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在

session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回

null。
 2、get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;而load方

法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据

库。
  3、虽然好多书中都这么说:“get()永远只返回实体类”,但实际上这是不正确的,get

方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如

被load方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而

不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那

么它会查询二级缓存或者数据库来加载数据,但是返回的还是代理对象,只不过已经加载了

实体数据。
 总之对于get和load的根本区别,一句话,hibernate对于load方法认为该数据在数据库中

一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;

而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

Hibernate Session.get()和Session.laod()的区别相关推荐

  1. [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. hibernate之SessionFactory和Session

    1. 关于SessionFactory 1.) SessionFactory是一个与连接池的类差不多的东西,在这里存着多个Session-与数据库的会话(相当于connection) 2.) 因为连接 ...

  3. Hibernate的SessionFactory和Session

    一 SessionFactory(会话工厂)接口 ①缓存sql语句和某些数据(称为session级缓存). ②在应用程序初始化的时候创建,是一个重量级的类(吃内存),一般用单例模式保证一个应用中只需要 ...

  4. session 、cookie、token的区别

    session session的中文翻译是"会话",当用户打开某个web应用时,便与web服务器产生一次session.服务器使用session把用户的信息临时保存在了服务器上,用 ...

  5. 服务器端Session和客户端Session, 以及cookie的区别

    Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字符组 ...

  6. 服务器端Session、客户端Session和Cookie的区别

    1.Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字 ...

  7. session.removeAttribute(“ “)和session.invalidate()的区别

    session.removeAttribute(" ")和session.invalidate()的区别 removeAttribute存在session里的值没有了,但sessi ...

  8. session.invalidate()和session.removeAttribute()的区别

    1.理清概念 要明白这两个方法的区别,首先需要弄清楚这两个对象的概念. 1.1.关于session session是一种保存在服务端的,用于记录用户状态的对象. 用户状态可能有很多种,如登录用户名,登 ...

  9. SAP 中session和外部断点设置的区别

    1 Session Breakpoints:只在当前user session的所有main session中有效 2 External Breakpoints 在abap editor或事务SICF中 ...

  10. hibernate一级缓存和二级缓存的区别[转]

    缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...

最新文章

  1. 看清本质:程序员为什么会写Bug?
  2. 表单重复提交的解决方法
  3. printf, sprintf - 转换成指定格式的输出结果.
  4. 数据结构导论初步理解
  5. PHP.ini修改配置下载上传文件大小
  6. 分享:游戏新手引导程序框架设计3要点
  7. hdu 1006 Tick and Tick
  8. css对齐 挖坑~
  9. openGl学习之基本图元
  10. C/C++的const区别
  11. eclipse 输入提示插件_【STM32】搭建基于Eclipse平台的STM32调试环境
  12. linux中的‘make’和‘makefile’
  13. Openstack Nova network
  14. WIN10 自带无线投屏功能 灰色不可用
  15. 个人设置随身携带口袋操作系统手到擒来
  16. MacOS启动台(launchpad)缺少应用软件图标
  17. ENOVIA SmarTeam-CEO演讲PPT
  18. mysql 性能优化方案
  19. 腾讯云Elasticsearch集群多可用区容灾实现原理及最佳实践
  20. 乘方计算机在线应用,乘方开方计算器v1.2免费版

热门文章

  1. Q1手机银行运营报告:交易规模超150万亿,月活跃用户4.9亿
  2. 黑群晖折腾之此ip已被封锁
  3. Java程序员面试必备的20道数据库面试解析
  4. 一、科里奥利质量流量计
  5. matlab处理采集的声音数据
  6. 一次因JDK夏令时导致接口输出日期格式的时间与预期时间不一致的bug排查
  7. 为什么神经网络有偏置? 神经网络中的偏置(bias)究竟有这么用
  8. uniapp中使用原生方式写页面头部,存在多级页面时,当点击返回图标按钮时,父页面的返回按钮消失了(已解决)
  9. uniapp 导航栏滚动渐显渐隐,自定义返回按钮,返回图标背景色透明
  10. 字体大小fontsize中的pt、px、em