zoukankan      html  css  js  c++  java
  • Hibernate优化---抓取策略

    1.延迟加载

       类的延迟加载

           在类的映射文件中的class标签上配置lazy属性:默认为true,当你配置为false的时候,就算你使用session.load他也会在你调用这个方法之后发送SQL语句,而不是在你使用查询得到的对象的时候才发送SQL语句

       关联级别的延迟加载

           在类的映射文件中的set和many-to-one上配置lazy属性:默认为true,也就是说,当你查询某个对象是,他不会连带着查询他的关联对象,当你使用这些关联对象的时候才会发送SQL语句查询

    2.抓取策略

       set上的fetch和lazy

            fetch是用于控制sql语句格式的:取值---join,select(默认值),subselect,当使用join的时候lazy失效,以为查询对象的时候他第一条sql语句是select A join B on.....所以会一次性将关联对象也查出来。当取值为subselect时,查询多个对象及其关联对象时,发送的是一条嵌套查询的sql语句。select为默认值,情况和关联级别的延迟加载类似,不过多了一个取值extra,及其懒惰,当你选取这个值的时候,输出关联类的某个属性,他只会单独查询这个属性,而不是所以属性都差出来

       many-to-one上的fetch和lazy

           作用和set中的一样,只是fetch取值只有select和join,用法也一样,lazy取值为proxy,false,no-proxy(基本上不用),取值为proxy时,是否延迟加载取决于与之对应的类中的class上的lazy,例如:客户与联系人之间存在一对多关系,联系人映射文件中的many-to-one上的lazy为proxy,查询联系人时是否延迟加载客户,就取决去客户映射文件中class上的lazy

    3.批量抓取

    在set中设置batch-size="查询数量",当你查出客户列表,遍历客户get其联系人的时候会一次性查询多个客户的联系人,而不是每个客户的联系人都查询一次

  • 相关阅读:
    Dos命令快速设置ip、网关、dns地址
    远程桌面连接保存登陆用户以及密码(凭据)备份方法
    如何启用windows8, windows10中被停用的远程桌面,如何连接windows10远程桌面?
    通过日志恢复SQL Server的历史数据
    http://sourceforge.net/projects/rtspdirectshow/
    iphone上实现H264 硬编码
    利用lipo编译合并iPhone模拟器和真机通用的静态类
    在iOS上使用ffmpeg播放视频
    基于.Net的单点登录(SSO)解决方案
    java实现简单的单点登录
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11041728.html
Copyright © 2011-2022 走看看