`
wsql
  • 浏览: 11964542 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Hibernate两种加载数据的方式get()和load()

 
阅读更多

Hibernate加载数据的两种方式:

Get(),load()

1.Session.get(Classarg0,Serializable arg1)方法

*arg0:需要加载对象的类,例如:User.class

*arg1:查询条件(实现了序列化接口的对象);

*此方法返回类型为Object对象,然后我们可以强制转换为需要加载的对象,如果数据不存在,则返回null

注:执行此方法时立即发出查询SQL语句,加载User对象

2.Object Session.load(Classarg0,Serializable arg1)throws HibernateException

*arg0:需要加载对象的类,例如:User.class

*arg1:查询条件(实现了序列化接口的对象);

*此方法返回类型为Object,但返回的是代理对象

*执行此方法时不会立即发出查询SQL语句。只有在使用对象时,它才发出SQL语句,加载对象

*load方法实现了lazy(称为延迟加载)

*Hibernate延迟加载实现原理是代理方式

*使用load方法加载数据,如果数据库中没有相应记录,则会抛出异常对象找不到

Hibernate两种加载数据方式的区别:

get()方法默认不支持lazy(延迟加载)功能,load()支持;

get()方法在查询不到数据库时,返回null,而load因为支持延迟加载,只有在对象使用时才加载,如果数据不存在时会抛出异常。

Get()和load()只支持主键查询,不能根据其他字段查询,如果想根据非主键查询,可以使用HQL

Hibernate更新删除数据:

Hibernate进行更新删除时,先加载数据,然后再更新删除


分享到:
评论

相关推荐

    hibernate get load区别

    - **支持懒加载**:`load`方法天然支持懒加载,而`get`方法不支持懒加载,这意味着对于那些不确定数据是否存在的场景,使用`get`方法可能更为合适。 - **性能考虑**:由于`load`方法可以通过懒加载来延迟数据的...

    hibernate中get和load方法的区别

    在Java的持久化框架...综上所述,`get`和`load`是Hibernate中获取实体对象的两种方式,它们在执行策略、异常处理和性能优化等方面有所区别。理解并合理应用这些差异,能帮助我们编写更加高效和健壮的Java应用程序。

    session的get与load比较

    在Hibernate中,`Session`接口提供了`get`和`load`两种方法来获取数据库中的实体对象。 1. **get** 方法:尝试从当前Session的缓存中获取指定ID对应的实体对象;如果缓存中不存在,则直接执行SQL查询语句从数据库中...

    Hibernate查询 load与get的区别及其它查询测试

    `load`和`get`方法是Hibernate中用于检索实体的两种主要方式,它们都是从Session接口中调用,但有明显的区别和各自的适用场景。 1. `load`方法: - `load`方法主要用于根据主键加载对象,它返回一个代理对象,而...

    Hibernate几种获数据方法比较

    `Session.get()`和`Session.load()`是Hibernate中用于根据主键ID加载实体对象的两种方法。这两种方法的主要区别在于异常处理和懒加载支持上: - **`Session.get()`**: 当指定的ID不存在时,`get()`方法返回`null`,...

    Hibernate中get()和load()的区别.docx

    在Hibernate ORM框架中,获取持久化对象的两种主要方法是`get()`和`load()`。它们都是用来根据主键ID查询数据库中的实体对象,但两者在执行机制和返回结果上有显著的区别。 1. `get()`方法 当调用`session.get()`...

    Hibernate实战

    查询语言在Hibernate中主要有两种:HQL(Hibernate Query Language)和 Criteria API。HQL是面向对象的查询语言,类似于SQL,但更接近于Java的语法。Criteria API则提供了一种动态构建查询的方式,更加灵活且类型...

    hibernate_reference中文版和Hibernate中文手册

    5. CRUD操作:Hibernate提供了便捷的方法来完成创建(save()、persist())、读取(get()、load()、query())、更新(update()、merge())和删除(delete())对象的操作。其中,HQL(Hibernate Query Language)和...

    hibernate第一个hibernate

    Hibernate支持JTA和JDBC两种事务管理方式。通常,对于小型项目,可以使用`Session.beginTransaction()`和`Transaction.commit()`进行本地事务管理。 9. 性能优化: Hibernate提供了缓存机制,如一级缓存(Session...

    hibernate 中文参考文档

    此外,文档可能还会涉及事务管理,因为Hibernate支持JTA和JDBC两种事务处理方式。事务是保证数据一致性的重要机制,理解并正确使用事务对于防止数据不一致至关重要。 最后,文档可能会包含一些高级主题,比如缓存...

    hibernate5.5.4

    例如,使用Session对象的save()或persist()方法可实现对象的持久化,而get()和load()用于查询,update()和merge()用于更新,delete()则用于删除。 4. **级联操作**: 在关联映射中,Hibernate允许级联操作,这意味着...

    hibernate3.2

    4. Querying:Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询方式,它们允许开发者用面向对象的方式来执行数据库查询。 5. 第二级缓存:Hibernate 3.2支持第二级缓存,可以提高应用性能,...

    hibernate3学习总结

    - **Query** 和 **Criteria** 接口:用于执行 SQL 查询,提供了动态和静态两种查询方式。 - **Hibernate 回调接口**:Lifecyle 和 Validatable 接口提供对象生命周期的回调,Interceptor 接口则用于拦截 Session ...

    Hibernate3.6中文API帮助文档

    Hibernate支持JTA和JDBC两种事务管理方式。在Java EE环境中,通常推荐使用JTA,而在Java SE环境中,JDBC事务管理更常见。 八、其他特性 - 支持懒加载(Lazy Loading):只有在真正需要数据时,才会去数据库加载关联...

    Hibernate基础学习源码

    2. **Hibernate_02**: 在这个阶段,开发者可能学习了如何在Hibernate中使用Session接口进行数据操作,比如保存(save()或persist())、更新(update())、删除(delete())和加载(get()或load())对象。此外,还...

    jdbc和hibernate学习内容

    2. **创建Statement或PreparedStatement**:这两种对象用于执行SQL语句。Statement适用于静态SQL,而PreparedStatement适用于预编译的SQL,能有效防止SQL注入。 3. **执行SQL**:通过调用executeQuery()或...

    hibernate类库

    Hibernate 是一个广泛使用的Java持久化框架,它提供了一种在关系型数据库与Java对象之间进行映射的机制,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写。通过Hibernate,我们可以方便...

    hibernatejar包

    2. **查询语言**:Hibernate支持两种查询语言:HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,类似于SQL,但操作的是对象而非表格。Criteria API则提供了一种基于对象的构建查询的...

    Hibernate-day02

    级联操作允许我们在一个实体的操作中自动处理与其关联的其他实体,而懒加载则是Hibernate优化性能的一种策略,它推迟了对关联对象的加载,直到真正需要时才加载,从而避免了内存浪费。 最后,我们可能会讨论到...

Global site tag (gtag.js) - Google Analytics