关于get方法与load方法的区别,我做了实验,结果有点出入,感兴趣的进来看看
看了CSDN上关于get方法与load的方法的区别。我做了一个实验。
论坛上是这样说的:
get ()永远只返回实体类”,但实际上这是不正确的,get 方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load 方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。
于是我写了个例子。环境是SSH
userManager.load(User.class,1);
userManager.get(User.class,1);
如果按照上面说的,运行到get的时候应该不发sql语句才对哦。因为已经load一下了。但是我的系统还是发出了sql语句。
请问这是为什么?
可能是因为缓存没有打开的原因吗?
论坛上是这样说的:
get ()永远只返回实体类”,但实际上这是不正确的,get 方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load 方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。
于是我写了个例子。环境是SSH
userManager.load(User.class,1);
userManager.get(User.class,1);
如果按照上面说的,运行到get的时候应该不发sql语句才对哦。因为已经load一下了。但是我的系统还是发出了sql语句。
请问这是为什么?
可能是因为缓存没有打开的原因吗?
...全文
相关推荐
Hibernate的get和load方法的区别
它会立即执行SQL查询,并返回与给定ID匹配的对象。如果对象不存在于数据库中,`get`方法将返回`null`。这种方式适用于你知道对象肯定存在于数据库中,或者你希望立即得到结果的情况。
Ubuntu零基础入门到精通【1.9讲】:️本书实验环境说明与学习方法建议!
🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。
Hibernate中Session.get()方法和load()方法的详细比较
在结合缓存技术的比较中,我们可以看到get()方法和load()方法的区别。
Hibernate中load方法与get方法的区别
因此,`get()`方法提供了更直接的反馈,对于不确定对象是否存在的情况更为适用。两者的另一个区别在于对缓存的利用。
hibernate中get和load方法的区别
在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。


Web 开发
