标签:load set 优化 客户 标签 bsp 他也 文件 nat
在类的映射文件中的class标签上配置lazy属性:默认为true,当你配置为false的时候,就算你使用session.load他也会在你调用这个方法之后发送SQL语句,而不是在你使用查询得到的对象的时候才发送SQL语句
在类的映射文件中的set和many-to-one上配置lazy属性:默认为true,也就是说,当你查询某个对象是,他不会连带着查询他的关联对象,当你使用这些关联对象的时候才会发送SQL语句查询
fetch是用于控制sql语句格式的:取值---join,select(默认值),subselect,当使用join的时候lazy失效,以为查询对象的时候他第一条sql语句是select A join B on.....所以会一次性将关联对象也查出来。当取值为subselect时,查询多个对象及其关联对象时,发送的是一条嵌套查询的sql语句。select为默认值,情况和关联级别的延迟加载类似,不过多了一个取值extra,及其懒惰,当你选取这个值的时候,输出关联类的某个属性,他只会单独查询这个属性,而不是所以属性都差出来
作用和set中的一样,只是fetch取值只有select和join,用法也一样,lazy取值为proxy,false,no-proxy(基本上不用),取值为proxy时,是否延迟加载取决于与之对应的类中的class上的lazy,例如:客户与联系人之间存在一对多关系,联系人映射文件中的many-to-one上的lazy为proxy,查询联系人时是否延迟加载客户,就取决去客户映射文件中class上的lazy
在set中设置batch-size="查询数量",当你查出客户列表,遍历客户get其联系人的时候会一次性查询多个客户的联系人,而不是每个客户的联系人都查询一次
标签:load set 优化 客户 标签 bsp 他也 文件 nat
原文地址:https://www.cnblogs.com/zy-Luo/p/11041728.html