区别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就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志
  2. 【BZOJ-4569】萌萌哒 ST表 + 并查集
  3. SQL Server 创建表 添加主键 添加列常用SQL语句
  4. Java for Mac 问题
  5. canvas像素操作
  6. 【转】IOS中的release和nil
  7. ubuntu12.04 gdb安装使用
  8. Windows下使用批处理设置IP地址,DNS
  9. ScriptManager需要用到的JS
  10. 小议common lisp程序开发流程 - Ever 17 - 博客频道 - CSDN.NET
  11. hdu4578(线段树)
  12. mysql数据库参数innodb_buffer_pool_size和max_connections
  13. linux内核中的C语言常规算法(前提:你的编译器要支持typeof和type)
  14. Keep面经汇总
  15. Exp1 PC平台逆向破解 20165235 祁瑛
  16. python 之 列表与字典
  17. js +与?优先级
  18. HTTP协议整理
  19. djang-rest-framework学习-day1
  20. SharePoint JavaScript API in application pages

热门文章

  1. 清理IIS Express上的网站
  2. C#各种异常处理方式
  3. 使用Bootstrap 3开发响应式网站实践06,使用ListGroup、Thumbnails展示内容
  4. C# 输入法 z
  5. c# webBrowser下载图片
  6. Python3.6学习笔记(五)
  7. 【BZOJ】【3670】【NOI2014】动物园
  8. there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
  9. Visual Studio 2013键盘码农常用快捷键
  10. 第十六章 springboot + OKhttp + String.format