Hibernate抓取策略2009-04-25 21:44抓取策略(fetching strategy) 是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL 或条件查询(Criteria Query)中重载声明。
Hibernate3 定义了如下几种抓取策略:
* 连接抓取(Join fetching) - Hibernate通过 在SELECT语句使用OUTER JOIN(外连接)来 获得对象的关联实例或者关联集合。
*查询抓取(Select fetching) - 另外发送一条 SELECT 语句抓取当前对象的关联实体或集合。除非你显式的指定lazy="false"禁止 延迟抓取(lazy fetching),否则只有当你真正访问关联关系的时候,才会执行第二条select语句。
*子查询抓取(Subselect fetching) - 另外发送一条SELECT 语句抓取在前面查询到(或者抓取到)的所有实体对象的关联集合。除非你显式的指定lazy="false" 禁止延迟抓取(lazy fetching),否则只有当你真正访问关联关系的时候,才会执行第二条select语句。
*批量抓取(Batch fetching) - 对查询抓取的优化方案, 通过指定一个主键或外键列表,Hibernate使用单条SELECT语句获取一批对象实例或集合。
批量抓取:
(1)在Hibernate中,对于关联抓取,可以定义每次抓取数据的数量,批量地将数据载入内存,减少与数据库交互的次数。在应用程序中可以定义车间默认的关联抓取数量。在
<hibernate-configuration>
<session-factory>
<property name-"default_batch_fetch_size">2</property>
</session-factory>
</hibernate-configuration>
(2)在映射定义文件中,可能在元素class中使用属性batch-size为持久化类指定批量抓取的数量。同样,如果要在集合中使用指定的批量,可以在集合元素set(list、bag等)中使用属性batch-size指定。如果同进采用了默认的批量抓取配置,又为持久化类或集合配置了特定的抓取数量,则类或集合的特定配置将覆盖配置文件中的默认批量抓取属性。
<hibernate-mapping package="com">
<class name="Classes">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"/>
<set name="students" inverse="true" batch-size="3">
<key column="classesid"/>
<one-to-many class="Student"/>
</set>
</class>
</hibernate-mapping>
分享到:
相关推荐
今天我们将深入探讨"day36 06-Hibernate抓取策略",特别是针对set集合的抓取策略。在阅读这篇博客文章(链接:https://364232252.iteye.com/blog/2368811)后,我们将了解到如何优化数据加载,以避免N+1查询问题,...
本篇主要关注的是Hibernate的抓取策略,特别是批量抓取技术,这对于提高应用程序性能至关重要。批量抓取能够减少数据库交互次数,从而优化查询效率。 首先,我们要理解什么是抓取策略。在Hibernate中,抓取策略是指...
今天我们要讨论的是Hibernate框架中的一个关键概念——抓取策略,特别是针对"many-to-one"关系的抓取策略。这篇博客将深入剖析这个主题,帮助你更好地理解和应用Hibernate。 Hibernate是Java领域中最流行的对象关系...
在Java的持久化框架Hibernate中,数据访问优化是至关重要的,而抓取策略(Fetch Strategy)和懒加载(Lazy Loading)则是实现这一目标的关键技术。本文将深入探讨这两个概念,并通过具体的案例进行分析。 首先,让...
描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在HIBERNATE框架中,检索策略主要涉及...
hibernate3数据检索、抓取策略 、 注解的使用
本篇文章主要探讨了Hibernate中的多表查询和抓取策略,这对于理解如何高效地从数据库获取数据至关重要。 1. **Hibernate中的多表查询** Hibernate支持多种多表查询方式,类似于SQL中的连接查询: - **交叉连接*...
本章主要探讨了如何通过不同的抓取策略来提升Hibernate的性能。抓取策略涉及到当应用程序需要处理对象间的关联时,Hibernate如何有效地获取关联数据。 首先,连接抓取(Join fetching)是一种通过在SELECT语句中...
Hibernate 简介 Hibernate 开发流程 Hibernate 配置文件 Hibernate 核心接口和类 Hibernate ORM映射 HQL Hibernate 懒加载机制与抓取策略 Hibernate 缓存 Hibernate 锁机制
你将直接深入到Hibernate的富编程模型之中,贯穿映射、查询、抓取策略、事务、会话、缓存以及更多其他内容。书中图文并茂地介绍了数据库设计和优化技术的实践。在本书中,作者详尽介绍了具有Java持久化2.1标准的...
在Hibernate Day 04的学习中,我们深入探讨了如何利用Hibernate进行查询操作以及它的抓取策略,这些是理解并有效使用Hibernate的关键部分。 首先,让我们来详细了解一下Hibernate的查询方式。Hibernate提供了一个...
包括基础抓取知识和应用抓取策略,例如通过查询和配置文件动态抓取数据。 批处理:Hibernate支持JDBC批处理,以提高批量数据操作的性能。 缓冲:讲解了如何配置二级缓冲以及管理缓冲数据。 拦截器和事件:这部分...
抓取策略(Fetching)介绍了Hibernate如何抓取对象及其关联对象,包括延迟加载和立即加载的策略选择。 批量操作(Batching)涉及如何执行数据库批处理操作,这对于执行大量数据更新或插入非常有用。 缓存机制...
以上内容是Hibernate5用户手册中文版的一部分知识点,涵盖了从基础的体系架构介绍到复杂的数据抓取策略和事务控制管理。手册为开发者提供了使用Hibernate进行数据持久化的全面指导,帮助开发者更好地理解和应用该...
9. Fetching(抓取)章节,说明了如何配置和应用不同的抓取策略来优化数据库访问和提升性能。包括不抓取、通过查询动态抓取、通过配置文件动态抓取等策略。 10. 批处理章节,展示了如何通过JDBC批处理来执行批量...
- 抓取策略包括单个对象、集合的懒加载和Eager加载等,影响数据的获取时机。 11. **事务隔离级别** - 事务的隔离级别包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ...
这些配置属性包括SQL方言、外连接抓取、二进制流、二级和查询缓存、查询语言替代、Hibernate统计信息和日志系统。此外,文档还提供了如何实现命名策略和持久化类提供者的指导。文档最后提及了Hibernate的XML配置文件...
19.1.2. 调整抓取策略(Tuning fetch strategies) 19.1.3. 单端关联代理(Single-ended association proxies) 19.1.4. 实例化集合和代理(Initializing collections and proxies) 19.1.5. 使用批量抓取(Using...
有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的 Hibernate 的效率低于直接JDBC存取,然而,在经过比较好...Hibernate的优化策略: 1.抓取优化 2.二级缓存 3.批量数据操作 4.杂项