zoukankan      html  css  js  c++  java
  • FetchType与FetchMode的差别

    使用例:

    @OneToMany(mappedBy="item",cascade=CascadeType.ALL,fetch=FetchType.EAGER) 

    @Fetch(value=FetchMode.SUBSELECT) 

    两者比較:

    两者都是设定关联对象的载入策略。前者是JPA标准的通用载入策略注解属性,

    后者是Hibernate自有载入策略注解属性。

    FetchType可选值意义与差别例如以下:

    FetchType.LAZY: 懒载入。在訪问关联对象的时候载入(即从数据库读入内存)

    FetchType.EAGER:立马载入。在查询主对象的时候同一时候载入关联对象。

    FetchMode可选值意义与差别例如以下:


    @ Fetch (FetchMode.JOIN) will use the left join query produced only one sql statement 
    @ Fetch (FetchMode.SELECT) will have N +1 clause sql statement 
    @ Fetch (FetchMode.SUBSELECT) produce two sql statement to use the second statement id in (.....) check out all the data associated



    @Fetch(FetchMode.JOIN): 始终立马载入,使用外连(outer join)查询的同一时候载入关联对象,忽略FetchType.LAZY设定。

    @Fetch(FetchMode.SELECT) :默认懒载入(除非设定关联属性lazy=false),当訪问每个关联对象时载入该对象,会累计产生N+1条sql语句

    @Fetch(FetchMode.SUBSELECT)  默认懒载入(除非设定关联属性lazy=false),在訪问第一个关联对象时载入全部的关联对象。会累计产生两条sql语句。且FetchType设定有效。

  • 相关阅读:
    计划任务
    swap
    fdisk
    raid 搭建
    Http协议中Cookie详细介绍
    linux系统日志以及分析
    搞清楚php-FPM到底是什么?
    Amoeba+Mysql实现数据库读写分离
    Last_SQL_Error: Error 'Can't drop database 'ABC'; database doesn't exist' on query. Default database: 'ABC'. Query: 'drop database ABC'
    MySQL主从失败, 错误Got fatal error 1236解决方法
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7095431.html
Copyright © 2011-2022 走看看