查询单个对象可以直接通过Session对象来做到,其中session这个对象提过了2种获得单个对象的方法,一个是get方法和load方法,我去看这个两个方法的时候发现这两个方法的参数是一样的,使用方式也是一样的,我们先来看看具体的使用方法:
1. Object obj = session.get(user.getClass(), 100);
2. Object obj1 = session.load(user.getClass(), 200);
这个方法的使用方式看起来都一样都能获取到一个object对象,其实这两个方法有很大的区别:
1.用get方法的时候是session会立即创建一个连接并获取数据,用 load方法的时候是session不会去创建连接然后去获取数据,它会在你去获取你要查询的对象的属性的时候才会去创建连接和获取数据,所以说,用 load的话,我们获取到的obj1里面其实没有任何数据,只有我们obj1.getXXX();的时候才会去获取数据库的数据,但是如果我们在没有去获取它的属性以前,就关闭了session的话,就会报session已经关闭了。
2.用load方法的时候如果查询出来的对象里面又包含一个对象属性呢,当我们查询出来的时候这个对象里面的对象属性是为null的,当具体要getXXX对象属性的时候才会去访问。
3.用get的话如果传入的id不存在会返回空值,load返回一个代理类,如果id不存在,报id不存在异常
上面的两种方法都要通过主键进行查询,其他字段不能够使用。而我们在平常项目中很多时候需要通过一个唯一约束条件得到一个对象。比如通过用户名得到密码,这个时候可以使用uniqueResult()方法来获取。比如
Query q = session.createQuery("select t.password from TUserLogin t where t.username='"+loginUser+"'");
Object o = q.uniqueResult();
这个时候o就是一个字符串类型的对象。
分享到:
相关推荐
17.1.9 检索单个对象(uniqueResult()方法) 17.1.10 按主键逐个处理查询结果(iterate()方法) 17.1.11 可滚动的结果集 17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件...
- 使用`Session.get()`方法根据主键获取单个对象。 - 使用`Session.load()`方法懒加载对象,只创建代理对象,不立即执行查询。 - 使用`Session.createQuery()`或`Session.createCriteria()`进行HQL或Criteria查询...
17.1.9 检索单个对象(uniqueResult()方法) 17.1.10 按主键逐个处理查询结果(iterate()方法) 17.1.11 可滚动的结果集 17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件...
17.1.9 检索单个对象(uniqueResult()方法) 17.1.10 按主键逐个处理查询结果(iterate()方法) 17.1.11 可滚动的结果集 17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件...
17.1.9 检索单个对象(uniqueResult()方法) 17.1.10 按主键逐个处理查询结果(iterate()方法) 17.1.11 可滚动的结果集 17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件...
- 执行查询后,调用`Query`对象的`uniqueResult`方法获取单个结果。 #### 实验十六:Query-iterator()方法 **实验目的:** - 掌握`Query`对象的`iterator`方法。 **实验步骤:** - 执行查询后,调用`Query`对象...
在Hibernate中,查询是获取数据的核心功能。以下是对几种查询方法的详细解释: 1. `get()` 和 `load()`:两者都用于根据ID获取对象,但有关键区别。`get()` 直接从数据库中获取数据,如果不存在则返回`null`;而`...
- `Session.get()`通过主键获取单个对象。 - `Session.load()`懒加载,返回代理对象。 - `Session.createQuery()`或`Session.createCriteria()`构建查询,返回Query或Criteria对象,然后调用`list()`或`...
1. **OID检索**:通过主键 ID 获取对象,使用 `get` 或 `load` 方法。 2. **对象导航**:通过已加载的对象访问其关联对象。 3. **HQL查询**:基于 Hibernate 查询语言的查询方式,语法类似 SQL。 4. **QBC查询...
Session接口提供了多种操作,如`save()`, `update()`, `delete()`用于对象的持久化操作,`get()`, `load()`用于检索对象,`createQuery()`和`createSQLQuery()`用于执行HQL和SQL查询。 4. **Criteria API** ...
- 使用`get`或`load`方法查询单个对象。 **15. Hibernate的优缺点** - 优点: - 简化数据库操作,提高开发效率。 - 支持多种数据库。 - 跨平台能力强。 - 缺点: - 学习曲线较陡峭。 - 性能问题,尤其是在...
使用Session的get()或load()方法,或者Query对象的list()或uniqueResult()方法,可以获取单个或多个数据库记录,并将其转化为Java对象。 3. **更新(Update)**: 更新数据涉及到修改已存在于数据库中的记录。在Java中...