get()----不支持LAZY
-
Useruser=(User)session.get(User.class,"402880d01b9bf210011b9bf2a2ff0001");
当调用上面的方法时,马上发出查询sql,加载User对象
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
-
Useruser=(User)session.get(User.class,"asdfsafsdfdsf");
-
System.out.println("user.name="+user.getName());
采用get加载数据,如果数据库中不存在相应的数据,返回null,它不会抛异常
load()----支持LAZY
-
Useruser=(User)session.load(User.class,"402880d01b9bf210011b9bf2a2ff0001");
不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
hibernate延迟加载实现原理是代理方式
-
System.out.println("user.name="+user.getName());
延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
-
Useruser=(User)session.load(User.class,"55555555");
-
System.out.println("user.name="+user.getName());
-
-
综
上所述,使用load和使用get方法都是可以找到相应的对象的,但发出sql语句的时机不一样,get是在调用get方法时就会发出sql语句,而
load在调用load方法时并不会发出sql语句,只有在调用该查询出来的对象的属性时才会发出sql语句,而当找不到结果时,get得出的结果是
null,但并不会抛异常,load则会抛出异常
分享到:
相关推荐
在Hibernate中,`Session`接口提供了`get`和`load`两种方法来获取数据库中的实体对象。 1. **get** 方法:尝试从当前Session的缓存中获取指定ID对应的实体对象;如果缓存中不存在,则直接执行SQL查询语句从数据库中...
Hibernate中Session.get()方法和load()方法是两个常用的数据访问方法,但它们之间有着本质的区别。 首先,从返回值上看,get()方法直接返回实体类,如果查不到数据则返回null。load()方法则返回一个实体代理对象,...
首先,让我们关注`get`和`load`的区别: 1. **返回结果对比**: - `load`方法如果找不到对应的记录,会抛出`org.hibernate.ObjectNotFoundException`异常。这是因为`load`方法假设给定的ID肯定在数据库中存在,它...
在Hibernate ORM框架中,获取持久化对象的两种主要方法是`get()`和`load()`。它们都是用来根据主键ID查询数据库中的实体对象,但两者在执行机制和返回结果上有显著的区别。 1. `get()`方法 当调用`session.get()`...
8. **session.get()** - 类似于load(),但当对象不存在时返回null,而不是抛出异常。 9. **session.delete()** - 删除缓存中的对象,并在事务提交时执行删除操作。`session.delete(customer)`会删除与customer关联...
在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,让我们来深入了解一下`get`...
### 在Hibernate中的数据库操作 ...特别地,`save`、`get`、`load` 和 `delete` 方法是进行基本 CRUD 操作的基础,而理解它们之间的差异能够帮助开发人员更高效地利用 Hibernate 来处理数据库交互。
本篇文章将详细解析Hibernate中的三种主要查询方式——HQL(Hibernate Query Language)、Criteria API和Query API,并着重讨论`load()`与`get()`方法的区别。 一、HQL查询 Hibernate Query Language(HQL)是...
### Hibernate中的Get与Load方法详解 #### 概述 在Hibernate框架中,`get`与`load`方法都是用于从数据库加载实体对象的常用手段。然而,这两种方法在实现细节上有着本质的区别,这些差异主要体现在对缓存的利用、...
本篇文章将深入探讨在使用Hibernate时可能会遇到的线程同步问题,以及 Hibernate 中的 session.get() 和 session.load() 方法的异同。 一、Hibernate的并发控制 在多线程环境下,多个线程同时访问和修改数据库记录...
- **读取(Read)**:通过`Session.get()`或`Session.load()`获取对象,或者使用`Query`或`Criteria`进行复杂查询。例如: ```java Session session = sessionFactory.openSession(); MyEntity entity = (MyEntity) ...
例如,使用 session.get() 或 session.load() 方法可以根据 OID 获取对象。 session.get(Customer.class, 1); 三、HQL 检索 HQL 是 Hibernate 最常用的检索方式,它支持所有 SQL 支持的检索方式。HQL 是一种面向...
要查询数据库,可以使用`Session`的`get()`或`load()`方法,或者执行HQL(Hibernate Query Language)或Criteria查询。例如,根据ID获取用户: ```java session = sessionFactory.openSession(); User user = ...
通过Session的get()或load()方法获取的对象默认处于此状态。 - **游离状态(Detached)**:对象曾经是持久化的,但当前未与任何Session关联。对象在游离状态下可以被重新持久化。 2. **对象持久化操作**: - **...
- **Read(查询)**: `session.get()`、`session.load()` 或使用 HQL(Hibernate Query Language)进行复杂查询。 - **Update(更新)**: 修改对象属性后,调用 `session.update()` 方法。 - **Delete(删除)**: ...
读取数据通常通过Session的get()、load()或query()方法完成。比如查询所有用户: ```java Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); List<User> users = ...
例如,我们可以使用`Session.save()`方法来保存一个新的对象到数据库,`Session.get()`或`Session.load()`来查找特定ID的对象,`Session.update()`更新已存在的对象,而`Session.delete()`则用于删除对象。...
`load`和`get`方法是Hibernate中用于检索实体的两种主要方式,它们都是从Session接口中调用,但有明显的区别和各自的适用场景。 1. `load`方法: - `load`方法主要用于根据主键加载对象,它返回一个代理对象,而...
`Session.get()`和`Session.load()`是Hibernate中用于根据主键ID加载实体对象的两种方法。这两种方法的主要区别在于异常处理和懒加载支持上: - **`Session.get()`**: 当指定的ID不存在时,`get()`方法返回`null`,...
最基础的是通过Session的get()或load()方法获取单个对象,通过createQuery()或createSQLQuery()执行HQL或SQL查询多个对象。下面是一个简单的HQL查询示例: ```java Session session = HibernateUtil....