Hibernate中load和get的两大区别

开发 后端
Hibernate中load和get的两大区别,包括延迟机制、读取时机不同和搜索不到数据时的情况。

1.读取时机不同(当lazy=true的时候)

Hibernate load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而Hibernate get不采用延迟机制(get语句时马上读库);

2.搜索不到数据时的情况

当搜索的数据不存在的时候,Hibernate load依然会返回一个对象,在你使用该对象的非主键数据时,会抛出异常;
当搜索的数据不存在的时候,Hibernate get会返回一个null;

备注:网上看来说load比get更节省资源;

我做过一个例子,即两个线程,1号线程把数据读出来,把session关掉。过几秒2号线程也去读相同的记录,这时2号线程并没有搜索库(没有显示出HQL语句),不管你用load还是get。

结论:我觉得它们两个都有使用到缓存,至于更深入的我没有去研究了。

【编辑推荐】

  1. Hibernate常见面试题汇总
  2. Hibernate中cascade和inverse的相关
  3. Hibernate入门教程 Hibernate关系映射详解
  4. Hibernate中Session.find/iterator方法
  5. 浅谈Struts分页中的Hibernate如何实现
责任编辑:张攀 来源: CSDN博客
相关推荐

2009-06-29 18:32:30

Hibernate

2009-06-26 16:23:12

Hibernate gHibernate l

2009-09-22 13:14:29

Hibernate gHibernate l

2018-03-22 09:35:35

区块链 信息化

2011-06-08 11:02:14

GetPost

2010-09-16 09:33:33

CSS displayCSS display

2020-09-24 10:09:01

GETPOST前端

2011-08-11 10:22:59

ibatishibernate

2010-07-15 14:25:06

Perl时间函数

2015-07-09 09:34:24

2011-07-20 17:31:12

C++

2011-07-20 17:48:07

C++

2020-10-28 09:50:33

SpringBootJava

2010-09-29 15:11:34

J2MEAndroid

2017-02-22 08:43:21

2009-06-24 08:02:15

Hibernateupdate与save

2021-05-19 09:01:37

Pythonurllib库requests库

2010-09-10 09:42:37

borderclearCSS

2010-04-01 09:34:06

Oracle函数

2011-06-08 11:05:38

getpost
点赞
收藏

51CTO技术栈公众号