• 四种Fetch策略


      按顺序从懒到积极的四种策略。

    • Lazy:一般人好像只会用这种策略。查询一批Order,只返回Order实例,当访问某个Order的items时,查询某个Order的Items。这种策略会产生著名的N+1查询,比如查询所有Order,再查询它们的Items时,会为每个Order的Items发出一条查询语句。(注意,只查一条Order,然后遍历它的所有item不会N+1)
    • Batch:查询一批Order,只返回Order实例,当访问某个Order的items时,批量查询一定数量Order的Items(如10个Order)。如果需要遍历所有Order的Items,需要N/10+1条语句。当然采用这种模式的前提是认为需要一些,但不是全部的Order的Items.
    • SubSelect:依然在查询一批Order时,只返回Order实例,当访问某个Order的items时,查询所有Order的Items,需要两条语句。适合在不一定需要Items,如果需要就全需要的情况。
    • Eager:只有一条语句,查询时返回Order与Items实例。适合一定全需要Items的情况。

    看来Lazy,SubSelect,Eager的情况都很清晰。Batch介于Lazy与SubSelect之间,用得好时也不错。可惜不能在session级动态改变annotation,一设就是全局的了。

  • 相关阅读:
    POJ 3468 线段树 成段更新 懒惰标记
    hdu 1717
    3个技巧让你正能量满满
    this指针基础介绍
    数组指针和指针数组的区别
    for循环的执行顺序
    读取文本文件里的数字求平均值
    break与continue的区别
    谈谈 静坐
    医生告诉我们的常识.读完它吧,你会一生受益
  • 原文地址:https://www.cnblogs.com/wenxiu/p/1938957.html
Copyright © 2020-2023  润新知