`
schy_hqh
  • 浏览: 558155 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hibernate基于配置文件(十八)抓取策略,优化查询

 
阅读更多

抓取策略:
    什么是抓取策略? 即拥有了一个实体对象,想要得到它的关联对象的策略
    什么是批量抓取策略? 即拥有了一批实体对象,想要得到这批实体对象的关联对象的策略
---------------------------------------------------------------------------------
在many-to-one/one-to-one上面(多的一端,如ContactPerson)定义抓取策略

1个对象---关联对象
    单一对象--get()/load() ContactPerson
    -fetch="select" (缺省) 发出第二条语句,获取关联对象
    -fetch="join" 在加载第一个对象的时候就通过左外连接一并获取到关联对象,此时,懒加载机制失效!

批量抓取策略

1批对象(List集合)---关联对象
    批量对象---通过list()获取到的对象 List<ContactPerson>
    批量抓取的时候,fetch="join"无效,即不会进行外连接获取关联对象
   
    解决办法:
    为了提高性能,在对方实体类的class映射上配置batch-size,让hibernate根据这个值来分批抓取关联对象
    避免发出大量的查询语句
    即在"一的那端"(如Group)的配置文件的class标签中设置  batch-size=n
    一次加载n个关联对象,而不是一次只获取一个
----------------------------------------------------------------------------------
在集合(one-to-many/many-to-many)上面定义抓取策略   Group--Set<ContactPerson>

1个对象---关联对象
    -fetch="select" 缺省,第二条查询才能获取到关联对象
    -fetch="join"   使用外连接一并查询出关联对象 ,lazy失效
    -fetch="subselect"  专门用于批量抓取,其它情况使用无效(单一对象使用无效,必须是集合类型)
   
批量抓取策略---    List<Group>

1批对象(List集合)---关联对象
    -fetch="join"无效
    -fetch="select" + batch-size=n 分批抓取关联对象(set集合标签上定义)
    -使用fetch="subselect" 通过子查询一次性查询出所有关联对象(set集合标签上定义)
        【第二条查询语句根据第一条查询语句来生成】


分享到:
评论

相关推荐

    Hibernate5用户手册中文版

    9. Fetching(抓取)章节,说明了如何配置和应用不同的抓取策略来优化数据库访问和提升性能。包括不抓取、通过查询动态抓取、通过配置文件动态抓取等策略。 10. 批处理章节,展示了如何通过JDBC批处理来执行批量...

    hibernate 3.2中文手册 中文文档

    - 解释如何使用XML配置文件来定义Hibernate的配置信息。 - **3.8 J2EE应用程序服务器的集成** - **3.8.1 事务策略配置** - 介绍如何在J2EE环境中配置事务管理策略。 - **3.8.2 JNDI绑定的`SessionFactory`** -...

    hibernate说明文档

    - **外连接抓取**:控制Hibernate是否使用外连接来优化查询性能。 - **二进制流**:处理大对象类型时的相关配置。 - **二级缓存与查询缓存**:提高应用程序性能的重要机制之一。 - **查询语言中的替换**:使用...

    Hibernate全部知识点

    - Hibernate支持多种抓取策略,包括立即抓取(`EAGER`)和延迟抓取(`LAZY`)。 #### 树状结构 - 实现树状结构是Hibernate中的一个高级主题,通常涉及到递归查询或使用特定的树结构算法。 #### HQL查询语言 - **...

    hibernate_3.2_官方中文参考手册.

    - **1.2.3 Hibernate配置**:设置Hibernate的核心配置文件`hibernate.cfg.xml`,用于指定数据库连接信息及框架行为。 - **1.2.4 用Ant构建**:使用Apache Ant自动化构建工具,实现项目的编译、打包及部署。 - **...

    hibernate3.5.4中文帮助文档

    - **可选的配置属性**: SQL方言、外连接抓取、二进制流处理、二级缓存、查询语言中的替换、统计机制等高级配置项。 #### 4. 持久化类(Persistent Classes) - **一个简单的POJO例子**: 基于POJO(Plain Old Java ...

    Java项目实战-基于网络爬虫技术的网络新闻分析(附源码,部署说明).zip

    - 数据抓取策略:可能包括深度优先搜索(DFS)或广度优先搜索(BFS)等方法,根据网页结构和URL规律进行爬取。 2. **数据存储** - 数据库设计:文件"02数据库.rar"可能包含数据库脚本或已建好的数据库,用于存储抓取...

    javaweb服务器源码下载-WebScraper:基于JAVA的网络抓取工具-使用已实现的选择器为每个网站模板收集来自给定来源的结果。您可以

    6. **配置管理**:源码中可能包含配置文件,如properties或yaml格式,用于设置抓取参数、代理设置、请求间隔等。 7. **日志系统**:为了跟踪和调试,WebScraper会集成如Log4j或SLF4J的日志框架,记录运行时信息。 ...

    基于ssh的"网上订餐系统"

    可能涉及缓存策略(如使用Spring的Cache抽象)、数据库索引优化、分页查询、异步处理等技术。 通过学习和实践这个SSH网上订餐系统,开发者不仅可以掌握SSH框架的使用,还能深入了解Web应用的开发流程、数据库设计、...

    Java 开源项目中文文档

    - **可编程的配置方式和SessionFactory**:Hibernate支持通过编程方式配置,包括使用XML配置文件或者注解,SessionFactory是获取Session的工厂。 - **JDBC连接和配置属性**:Hibernate需要配置数据库连接,包括...

    姓名_javaEE软件工程师_2年_模板(47).doc

    * 熟练掌握 Hibernate 框架,包括一对多及多对多的对象关系映射以及延迟加载、数据缓存(一级缓存、二级缓存和查询缓存)、抓取策略和 HQL 等技术 * 熟练掌握 Spring 框架,包括 IOC 和 DI、AOP 编程、声明式事务...

    ssh爬虫搜索工程

    SSHWeb可能指的是整个基于SSH框架的Web应用程序,包括所有相关的源代码、配置文件、静态资源等。开发者可以通过部署这个Web应用来运行和测试整个"ssh爬虫搜索工程"。 综上所述,"ssh爬虫搜索工程"是一个利用SSH框架...

    NHibernate Documentation

    这部分介绍了NHibernate支持的一些可选配置属性,如SQL方言、外连接抓取策略等。这些配置可以根据实际需求进行调整。 #### 3.5.1. SQL方言 SQL方言用于指定特定的数据库系统支持的SQL语法变体。正确选择SQL方言...

    JAVA面试题SSH重点.pdf

    - Hibernate的HQL(Hibernate Query Language)是一种面向对象的查询语言,性能上优于SQL,因为它能利用延迟加载、缓存技术和批量抓取策略进行优化。 - 但若对HQL查询机制理解不足,配置不当,可能会导致性能下降...

    java web信息采集系统

    3. **数据库配置**:根据项目中的数据库连接配置文件(如applicationContext.xml或hibernate.cfg.xml),配置数据库连接信息。 4. **编译与构建**:编译源代码,并通过Maven或Gradle等构建工具生成WAR文件。 5. **...

    jsp+struts2数据采集系统

    学习struts2的配置文件、Action类、拦截器以及结果类型,能帮助我们更好地理解系统的工作流程。 数据采集部分,系统可能采用了定时任务来实现数据的定期抓取。这通常涉及到Java的定时器API,如`java.util.Timer`和`...

Global site tag (gtag.js) - Google Analytics