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其联系人的时候会一次性查询多个客户的联系人,而不是每个客户的联系人都查询一次

  • 相关阅读:
    闭包装饰器与递归
    内置函数学习
    可迭代对象 迭代器 生成器 推导式 匿名函数
    函数基础
    python文件操作
    深浅copy与小数据池
    python数据类型
    python基础语法
    view视图函数的书写 请求与响应相关
    LeetCode OJ:Rotate Image(旋转图片)
  • 原文地址:https://www.cnblogs.com/zy-Luo/p/11041728.html
Copyright © 2011-2022 走看看