`
badmanisme
  • 浏览: 32163 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernateTemplate的get和load方法的区别

    博客分类:
  • java
 
阅读更多
getHibernateTemplate.load() 和get()之间的区别


主要的地方:
getHibernateTemplate.load() 存在延迟加载问题。
getHibernateTemplate.get()  不存在此问题,她是不采用lazy机制的。
1  当记录不存在时候,get方法返回null,load方法产生异常,即get()可以取空的数据集,但load()不行。 
       take a look at the Hibernate documentation (though I agree is not very explicit)--the HibernateTemplate is basically a wrapper around the native Hibernate API.
       get() will return null if an object is not found while load() will always return a   non-null object which is a proxy. If the underlying object does not exist, the proxy  will thrown ObjectNotFoundException.
       load() should be used when you are sure that the object exits while get() when
you're not.


2  load方法可以返回实体的代理类,get方法则返回真是的实体类
3  load方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据,而get方法仅仅在内部缓存中
进行数据查找,如果没有发现数据則将越过二级缓存,直接调用SQL查询数据库。
4  也许别人把数据库中的数据修改了,load如何在缓存中找到了数据,则不会再访问数据库,而get则
会返回最新数据。
分享到:
评论

相关推荐

    hibernateTemplate的常用方法

    1. **get/load**:这两个方法都是用于根据主键获取实体对象,区别在于`get`会在找不到对应记录时抛出异常,而`load`则返回`null`。 - **示例**: ```java public Teacher getTeacherById(Long id) { return ...

    HibernateTemplate的用法总结

    在HibernateTemplate中,提供了多种常用的方法来实现数据访问操作(CRUD): 1. **`void delete(Object entity)`**:用于删除一个指定的对象实例。例如,如果要删除一个`Person`对象,可以直接调用此方法。 2. **`...

    hibernateTemplate

    ### HibernateTemplate概述与核心功能详解 #### 一、引言 在Java开发领域,特别是企业级应用开发中,数据持久层的设计与实现至关重要。...希望本文能帮助读者更好地理解和掌握`HibernateTemplate`的使用技巧。

    HibernateTemplate源代码

    - **get**/`load`:根据主键获取对象。 - **saveOrUpdate**:保存或更新对象。 - **delete**:删除对象。 #### 六、使用示例 下面是一个简单的使用示例: ```java // 创建HibernateTemplate实例 ...

    hibernateTemplate和HibernateDaoSupport

    hibernateTemplate 和 HibernateDaoSupport 是 Spring 框架中针对 Hibernate 数据库访问层的两个重要组件,它们简化了基于 Hibernate 的数据操作,使得开发者能够更高效地进行 CRUD(创建、读取、更新、删除)操作。...

    对hibernate的封装 HibernateTemplate

    5. **查询和结果集处理**:提供了丰富的查询方法,如`find()`, `load()`, `get()`等,以及方便的结果集转换和分页功能。 6. **Callback机制**:通过HibernateCallback接口,可以在Hibernate Session内部执行自定义...

    SSH2增删改查使用HibernateTemplate

    此外,HibernateTemplate还提供了`load()`、`execute()`等方法,以适应不同的业务需求。在实际开发中,为了事务的一致性,通常会将这些操作包裹在`@Transactional`注解的方法中,确保数据库操作的原子性和一致性。 ...

    Spring_Spring_Hibernate_HibernateTemplate

    - 编写业务逻辑:调用HibernateTemplate提供的方法,如`save()`, `update()`, `delete()`, `get()`, `load()`, `execute()`等,进行数据库操作。 6. **优点与局限性**: HibernateTemplate简化了代码,提供了事务...

    Spring整合hibernate(2)之基于HibernateTemplate的整合

    return hibernateTemplate.loadAll(User.class); } ``` 保存或更新: ```java public void saveOrUpdate(User user) { hibernateTemplate.saveOrUpdate(user); } ``` 删除: ```java public void deleteUser...

    Hibernate方法总结

    以下是对标题和描述中提到的HibernateTemplate方法的详细总结: A. `get` 和 `load`: 这两个方法都是用于从数据库中获取单个对象。`get`方法直接返回一个实体对象,如果数据库中没有找到对应ID的数据,则返回null...

    Hibernate的Template方法以及SQL简介

    与`get`方法类似,但`load`方法会在找不到对应实体时抛出异常。 3. **全表查询** ```java Query query = session.createQuery("from Order"); List<Order> list = query.list(); ``` 此方法用于查询表中的...

    Asp.net mvc3+nhibernate+spring.net整合

    `HibernateTemplate`是Spring.NET提供的一个方便的类,封装了NHibernate的CRUD操作,如`LoadAll`, `Get`, `Save`, `Update`和`SaveOrUpdate`,以减少手动处理事务和异常的复杂性。 6. **方法实现**:在`MoviceDao`...

    Spring整合hibernate的实例

    - HibernateTemplate提供了如save(), update(), delete(), get()和load()等方法,以及基于HQL(Hibernate Query Language)的queryForList()等方法。 3. **DAO(数据访问对象)设计**: - Spring鼓励使用DAO接口...

    HibernateS整合pring

    `HibernateTemplate`提供了诸如`save()`, `update()`, `delete()`, `get()`, `load()`等方法,用于执行基本的对象持久化操作。此外,`HibernateTemplate`还支持`HibernateCallback`接口,允许开发者在回调方法`...

    HibernateDaoSupport.docx

    4. `load()`和`get()`:这两个方法用于根据ID获取记录。`load()`返回的是代理对象,即使数据库中没有对应记录,也不会抛出异常,而是返回一个空引用。`get()`则会在记录不存在时抛出异常。 综上所述,...

    ssh框架的笔记

    Session是与数据库交互的主要接口,包含Save、Get、Load、Update、Delete等方法,用于持久化对象。 4. **Query接口** Query接口用于执行HQL(Hibernate Query Language)查询,提供List、uniqueResult、setString...

    spring4.2与Hibernate4.3配置

    5. **创建DAO层**:在DAO层,继承HibernateDaoSupport或者直接使用HibernateTemplate,这样可以利用其提供的方法进行增删查改操作,如save()、update()、delete()、load()、get()等。 6. **事务管理**:Spring提供...

    SSH面试总结(非常全)

    Hibernate的load()与get()方法的区别** `load()`和`get()`方法都用于从数据库加载实体,但它们在异常处理上有所不同。`load()`默认抛出`ObjectNotFoundException`异常,当实体不存在时,而`get()`方法则返回`null`...

    Spring整合Hibernate

    这两个类为Spring提供了便捷的Hibernate操作接口,封装了Session的常用方法,比如save、update、delete和load等。例如: ```xml <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5....

    spring+hibernate整合简单示例

    6. **Query对象的创建和执行**:Spring的HibernateTemplate提供了方便的queryForList、get、load等方法,简化了对HQL或SQL查询的处理。 在实际项目中,"spring+hibernate整合简单示例"可能包含以下内容:一个简单的...

Global site tag (gtag.js) - Google Analytics