`
hpjianhua
  • 浏览: 240933 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Hibernate 数据加载方式

阅读更多
Hibernate数据加载方式

Hibernate支持以下几种数据加载方式:
即时加载(Immediate Loading)
当实体加载完成后,立即加载其关联数据
延迟加载(Lazy Loading)
实体加载时,其关联数据并非马上获取,而是当关联数据第一次被访问时再进行读取.
预先加载(Eager Loading)
预先加载时,实体及其关联对象同时读取,这与即时加载类似,不过实体及其关联数据是通过一条SQL语句(基于外连接[outer join])同时读取.
批量加载(Batch Loading)
对于即时加载与延迟加载,可以采用批量加载方式进行性能上的优化

即时加载(Immediate Loading)

配置如下
:
<set name="address"
		table="t_address"
		inverse="true"
		cascade="none"
		sort="unsorted"
		lazy="false">
		<key column="user_id">
		</key>
		<one-to-many class="com.hpjianhua.hibernate.Address"/>
	</set>

即时加载的基本原理:当宿主实体(关联主体)加载时,Hibernate会马上自动读取其关联的数据并完成关联属性的填充.

延迟加载(Lazy Loading)

配置如下:

	<set name="address"
		table="t_address"
		inverse="true"
		cascade="none"
		sort="unsorted"
		lazy="true">
		<key column="user_id">
		</key>
		<one-to-many class="com.hpjianhua.hibernate.Address"/>
	</set>


预先加载(Eager Loading)
预先加载即通过outer-join完成关联数据的加载,这样,通过一条SQL语句即可完成实体及其关联数据的读取操作,相对即时读取的两条甚至若干条SQL而言,无疑这种机制在性能上能带来更多的提升.

批量加载(Batch Loading)

批量加载,简而言之,就是通过批量提交多个 限定条件,一次完成多个数据的读取.如对于以下形式的SQL:
Select from User where id=1;
Select from User where id=3;
我们可以整合成一条SQL语句完成同样的功能:
Select from User where id=1 or id=3;
    这就是所谓的批量加载机制,如果使用了批量加载机制,Hibernate在进行数据查询操作前,会自动在当前的Session中寻找是否还有其他同类型的待加载的数据,如果有,则将其查询条件合并到当前的select语句中一并提交,这样,通过一次数据库操作即完成了多个读取任务.
在实体配置的class节点中,我们可以通过batch-size参数打开批量加载机制,并限定每次批量加载的数量:
<class name="User" table="t_user" batch-size="5">
一般来说,batch-size应该设定为一个合理的小型数值(<10).
2
0
分享到:
评论

相关推荐

    Hibernate之数据加载方式

    **标题:“Hibernate之数据加载方式”** 在Java的持久化框架中,Hibernate是一个非常重要的工具,它简化了数据库操作,提供了对象关系映射(ORM)的功能。本篇将深入探讨Hibernate的数据加载方式,帮助开发者更好地...

    配置hibernate数据源

    配置Hibernate数据源是一项基础而重要的任务,涉及在Java应用程序中集成和使用Hibernate框架以及MySQL数据库。以下内容旨在详细介绍如何在MyEclipse开发环境中配置Hibernate数据源,同时解释相关概念和步骤。 首先...

    Hibernate数据持久层jar包源码解析

    《Hibernate数据持久层jar包源码解析》 在软件开发中,数据持久层是系统架构中的关键部分,它负责将应用程序的数据与数据库进行交互。Hibernate作为一款强大的Java对象关系映射(ORM)框架,极大地简化了这个过程。...

    Java Hibernate3 添加和删除数据

    在Java Hibernate3中,添加和删除数据是通过持久化类和配置文件实现的,无需直接编写SQL语句。以下是关于这个主题的详细说明。 首先,我们需要了解Hibernate3的基本概念。Hibernate提供了一个API,允许开发者将Java...

    Hibernate加载方式与多态加载分析

    本篇文章将探讨Hibernate的加载方式以及多态加载的概念。 首先,我们关注Session中的`load`和`get`方法。`load`方法是用于根据主键加载对象,它支持CGLIB懒加载(lazy loading)动态代理。当lazy属性设置为true时,...

    spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码

    在这个项目中,我们有两个主要的数据访问技术:Hibernate和MyBatis,它们都是Java领域中广泛使用的ORM(对象关系映射)工具。 **Hibernate** 是一个强大的ORM框架,它允许开发者通过Java对象来操作数据库,而无需...

    hibernate延迟加载解决

    ### Hibernate延迟加载详解 #### 一、什么是延迟加载? 延迟加载是一种优化技术,在软件开发中广泛应用于各种场景,尤其在...通过合理配置和使用这一机制,可以有效地优化应用程序的数据加载流程,提高用户体验。

    Hibernate延迟加载以及利用Spring

    1. **修改Fetch策略**:将Fetch策略设置为`fetch="join"`,即在查询主对象的同时通过JOIN查询的方式加载关联对象,这样就不会抛出延迟加载异常。 2. **禁用延迟加载**:将`lazy="false"`,这样就会在查询主对象时...

    hibernate 延迟加载深入剖析

    这种方式避免了在程序启动或对象创建初期就加载大量不必要的数据,从而降低了内存占用和提高了应用程序的启动速度。 ##### 2.2 Hibernate中的延迟加载实现原理 在Hibernate中,延迟加载是通过代理模式实现的。当...

    Hibernate 显示数据库数据

    9. Eclipse集成:在Eclipse中,可以通过Maven或Gradle添加Hibernate依赖,并使用IDE的工具来生成实体类和映射文件,方便开发。 10. 示例项目:`HibernateShowStudent`可能是演示如何从数据库中查询并显示`Student`...

    Hibernate 延迟加载剖析与代理模式应用

    为了避免这种情况,Hibernate提供了延迟加载机制,使得只有在真正需要访问`addresses`时,才会去数据库查询相关的`Address`数据。 配置延迟加载的关键在于Hibernate的映射文件。在`&lt;set&gt;`元素中,我们通常会设置`...

    springboot2.0多数据源集成hibernate配置hibernateDaoSupport示例

    通过这种方式,我们可以在不同的事务管理器下,利用`HibernateDaoSupport`与不同数据源进行交互。在`springBootDemo01`项目中,你将找到具体实现这些功能的代码结构和配置。 总结,这个示例展示了如何在Spring Boot...

    hibernate数据持久化组件

    ### Hibernate 数据持久化组件 #### 一、背景与概述 在现代软件开发中,数据持久化是一项关键的技术,它解决了程序运行过程中数据的保存问题。根据题目提供的信息,“内存是暂时存储设备,断电后数据易丢失”,这...

    hibernate对Blob类型字段进行数据添加.txt

    ### Hibernate 对 Blob 类型字段进行数据添加 #### 知识点概述 在处理数据库操作时,经常需要存储二进制大对象(Binary Large Object,简称 BLOB),例如图像、视频等非文本数据。BLOB 类型是数据库系统中用于存储...

    Hibernate 使用缓存时,数据同步问题

    2. **使用`refresh()`方法**:调用实体对象的`refresh()`方法可以强制Hibernate从数据库中重新加载该对象的状态,以覆盖缓存中的陈旧数据。 3. **设置缓存模式**:在查询时,可以设置`CacheMode.REFRESH`,强制...

    Hibernate数据访问技术大全

    《Hibernate数据访问技术大全》是一本深入探讨Java领域中Hibernate框架的数据访问技术的权威指南。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发人员能够以面向...

    Hibernate使用——自定义数据类型

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,通过面向对象的方式处理数据。在实际项目开发中,有时我们可能需要对数据库中的某些字段使用自定义的...

    hibernate 数据库操作方法

    4. 分页查询:避免一次性加载大量数据,可以使用HQL或Criteria的setFirstResult和setMaxResults方法进行分页。 5. 断言和日志:利用Hibernate的assertions功能进行数据验证,同时记录日志便于问题排查。 通过熟练...

Global site tag (gtag.js) - Google Analytics