Hibernate中的get和load的区别
参考书上介绍如下:
load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,则越过二级缓存,直接调用SQL完成数据读取
抱着怀疑的态度进行了测试,代码如下:
1.配置文件
2.映射文件
3.测试代码
测试结果如下:
Hibernate: select person0_.id as id0_0_, person0_.name as name0_0_, person0_.age as age0_0_, person0_.address as address0_0_ from person person0_ where person0_.id=?
张飞(翼德)
张飞(翼德)
1
很明显:使用get方法,在第一个Session关闭后,并没有再次执行SQL语句,数据是从二级缓存中获得的,最后的一次命中也再次说明了这个问题,看来书本上的内容也不能尽信啊,实践出真知
PS:不过有可能书本上是按照Hibernate2.0版本讲解的,在3.0以后的版本中,get方法也能访问二级缓存数据了?
分享到:
相关推荐
在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,让我们来深入了解一下`get`...
在Hibernate框架中,`get`和`load`都是用于从数据库中检索持久化对象的方法,但它们在工作原理和使用场景上存在着显著的区别。本文将深入探讨这两个方法的差异,并结合实际应用进行详细阐述。 首先,`get`方法是...
在Hibernate框架中,Session是与数据库交互的主要接口,它提供了...了解这些概念和方法的区别对于高效地使用Hibernate进行数据库操作至关重要,可以根据具体场景选择合适的方法来优化应用程序的性能和数据处理逻辑。
`load`和`get`方法是Hibernate中用于检索实体的两种主要方式,它们都是从Session接口中调用,但有明显的区别和各自的适用场景。 1. `load`方法: - `load`方法主要用于根据主键加载对象,它返回一个代理对象,而...
在Hibernate框架中,`load()`和`get()`都是用于从数据库中检索对象的方法,但它们在功能和行为上存在显著的差异。理解这些差异对于优化应用程序的性能和处理潜在异常至关重要。 首先,`load()`方法执行延迟加载策略...
Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...
本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
这种方式主要依赖于Hibernate提供的`get`和`load`方法。当已知对象的主键值时,可以直接通过这些方法获取对应的持久化对象。 **特点**: - **快速获取**:直接通过OID快速定位并获取对象。 - **懒加载支持**:默认...
### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...
使用get()和load()方法检索对象,使用Criteria或HQL查询对象集合。 5. 提交事务:在一组数据库操作完成后,使用Session的commit()方法提交事务。如果发生错误,可以调用rollback()回滚事务。 6. 关闭Session:每次...
2. 通过标识符检索:使用 session.get() 方法或 session.load() 方法根据标识符检索对象。 3. 使用 HQL 检索对象:使用 Hibernate 查询语言 HQL 检索对象。 4. 使用 Hibernate 条件 API:提供了类型安全的面向对象的...
这些方法包括:HQL(Hibernate Query Language)、QBC(Query By Criteria)、Criteria API以及直接使用Session的get()和load()方法。 1. HQL(Hibernate Query Language) HQL是Hibernate专有的面向对象的查询语言...
这可以通过Session的get()或load()方法实现,它们根据主键值从数据库中检索对象。 2. **删除对象**:调用Session的delete()方法,传入要删除的对象。Hibernate会生成对应的DELETE SQL并执行。 3. **提交事务**:和...
4. **加载(get()和load())**:这两者都是用于从数据库中获取对象。get()方法直接返回对象,而load()则返回一个代理对象,只有在需要时才从数据库加载数据,以实现懒加载。 5. **查询(createQuery()、...
这涉及到使用Session的save()、saveOrUpdate()、load()、get()、update()、merge()和delete()方法。同时,还会讨论事务管理和并发控制,确保数据的一致性和完整性。 查询语言在Hibernate中主要有两种:HQL...
这种映射使得开发者可以使用对象的属性和方法直接操作数据,而无需关注底层的 SQL 语句。 二、hibernate 入门 在开始使用 Hibernate 之前,需要进行环境配置,主要包括导入 Hibernate 相关的 JAR 包,如 Hibernate...
例如,Session接口提供了save()、update()、delete()方法用于保存、更新和删除对象,而load()和get()方法用于检索对象。 - HQL(Hibernate Query Language):这是Hibernate特有的查询语言,类似于SQL,但更面向...
`Session`的`get()`和`load()`方法可以直接根据对象的ID获取对应的数据。`get()`方法会立即返回对象,如果数据库中没有找到,会抛出异常;而`load()`方法则返回代理对象,直到真正访问属性时才加载数据,这有助于...
4. 异步查询:通过Hibernate的FutureResult和Query.listAsync()实现异步数据检索。 5. 动态模型:无需预先定义实体类,可以动态构建查询并执行。 通过阅读和分析Hibernate 3.2的源码,我们可以深入了解ORM框架的...
关于Hibernate的延迟加载机制,get方法和load方法在处理时有所不同: - get方法会先检查session缓存,如果没找到,再去二级缓存查找,最后才查询数据库。如果数据库中也没有相关记录,则返回null。 - load方法则...