`

CUDR_Fetch 和 Cascade

阅读更多
CUDR_Fetch 和 Cascade



1.Fetch的作用:在联接查询中,它是一次性的将两张表的作为一张表,全部
加载;fetch用于查找同步,cascade用于增删改同步

fetch 和 lazy 主要是用来级联查询的(load get),   而 cascade 和 inverse 主要是用来级 联插入和修改的 .

2.例子:
  group类
  @OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.LAZY)  //OneToMany  默认fetch为LAZY  当查询小组时,不会从user表里查询出该小组的所有组员,当group.getUsers().get(0).getName()此时ORM框架会向数据库发出查询语句
  public Set<User> getUsers() {return users;} 


  user类
  @ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER) //ManyToOne   默认Fetch为EAGER 当查询的时候会把该user所在的小组也查询出来
  public Group getGroup() { return group;} 
 

   CRUD即create(创建)、Read/Retrieve(读取)、Update(更新)和Delete(删除)
   Cascade用于设置CUD
   Cascade.all在所有情况下级联。
    Cascade.MERGE合并 save update
   Cascade.PERSIST保存
    Cascade.REFRESH刷新
    Cascade.REMOVE删除
    Fetch用于设置R
    Fetch.EAGER主动的积极
    Fetch.LAZY懒

3.cascade不管读,fetch管读 ,fetch:lazy和eager,只是取得早晚问题,用到的时候一定能取得
在一对多双向关联时
读少的一方时,里面存的多的不会自动加载,lazy
读多的一方时,里面存的少的会自动加载,因为它少eager


4.重要结论
要想关联,得设置好对象的关联
   从多端user保存,先手工保存dept,否则抛TransientObjectException异常。
   除非设置cascade属性
   从一端保存,除非设定mappedBy并且设定CascadeType.ALL并且从两端
   正确设定关联关系,否则不会自动级联保存User
双向关系需加入mappedBy
Cascade有5种:ALL、MERGE、PERSIST、REFRESH、REMOVE 
Cascade并非不用不可。
Cascade不影响读取,只影响对象的持久化(添加,删除,修改)
Fetch有2种:EAGER LAZY,
   多端默认是EAGER,一端默认是LAZY
Fetch影响读取
Session关闭,lazy就不好使了
EJB3为延迟加载和获取模式提供了fetch选项,而Hibernate 这方面提供了更丰
富的选项集.为了更好的调整延迟加载和获取策略,Hibernate引入了 一些附加
的注解:
   @LazyToOne: 
   @LazyCollection: 
   @Fetch: 
JPA的Fetch,既管延迟加载的事情,又管抓取策略的事情。
   延迟加载:sql语句尽量晚发出
 抓取策略:靠什么样的sql,找到关联的对方



分享到:
评论

相关推荐

    php提示Warning:mysql_fetch_array() expects的解决方法

    在mysql数据库连接时碰到Warning: mysql_fetch_array() expects …错误提示,根据我的经验这个是sql返回的query为空了,我们没有加己判断直接使用了. mysql_fetch_array()函数导致的,下面我们一起来看问题解决方案,我...

    mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别

    在PHP中,MySQL数据处理是常见的任务之一,而`mysql_fetch_row`、`mysql_fetch_array`、`mysql_fetch_assoc...在使用这些新扩展时,对应的函数分别是`mysqli_fetch_row`、`mysqli_fetch_array`和`mysqli_fetch_assoc`。

    flutter_background_fetch,ios和android的后台定期回调。包括Android无头机制.zip

    Flutter Background Fetch 是一个开源项目,由晶体管软件(Transistor Software)开发,专门用于实现iOS和Android设备上的后台定期回调功能。这个库旨在解决移动应用在后台时执行任务的需求,例如更新数据、发送推送...

    mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array

    您可能感兴趣的文章:Lesson03_01 什么是CSS和CSS的设置方式Assoc显示或修改文件名扩展关联推荐学习php sesson的朋友必看PHP会话(Session)使用入门mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别js压缩...

    php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别

    当你想要同时使用数字索引和关联索引,或者希望以面向对象的方式处理数据时,`mssql_fetch_array()`(默认模式)或`mssql_fetch_object()`是理想的选择。在实际开发中,确保根据需求正确选择这些函数,以避免可能...

    BLE090_PRO_fetch_Fetch!_

    标题 "BLE090_PRO_fetch_Fetch!" 暗示我们正在处理一个与BLE(蓝牙低功耗)设备相关的项目,可能是一个固件更新过程,其中"fetch"可能指的是数据获取或下载操作。描述中的“Fetch error error fetch fetch”表明在...

    4.8 mysqli_fetch_assoc记录集获取.pdf

    mysqli_fetch_assoc 是 MySQLi 中的一个函数,用于从记录集中获取数据并保存到关联数组中。 知识点 1: mysqli_fetch_assoc 函数 mysqli_fetch_assoc 函数是 MySQLi 中的一个函数,用于将查询结果的一行保存至关联...

    mysql_fetch_row()与mysql_fetch_array()的使用介绍

    在上述示例中,使用`mysqli_fetch_array()`替代`mysql_fetch_array()`,并且使用`mysqli_connect()`和`mysqli_query()`等函数来连接和查询数据库,这是符合现代PHP编程的最佳实践。 总的来说,`mysql_fetch_row()`...

    深入mysql_fetch_row()与mysql_fetch_array()的区别详解

    在MySQL的PHP编程中,`mysql_fetch_row()` 和 `mysql_fetch_array()` 是两个非常常见的用于从查询结果中获取数据的函数。尽管它们的作用相似,但它们之间存在一些关键的差异,这些差异对于优化代码和提高可读性至关...

    4.9 mysqli_fetch_array记录集获取.pptx

    本文将深入探讨“4.9 mysqli_fetch_array记录集获取”这一主题,帮助您掌握如何使用mysqli_fetch_array()函数从记录集中有效地获取数据,并理解其特点以及如何在循环中处理这些数据。 mysqli_fetch_array() 是...

    PyPI 官网下载 | py_common_fetch-0.188.tar.gz

    比如,`py_common_fetch`可能有一个`fetch_data(url)`函数,允许用户传入URL直接获取数据。 4. **文档和示例**:为了帮助开发者理解和使用库,通常会有详细的文档说明,包括使用指南、API参考和示例代码。这些信息...

    PHP操作MySQL的mysql_fetch_* 函数的常见用法教程

    mysql_fetch_* 列函数 mysql_fetch_* 列函数的主要功能是从查询返回的结果集中取得相关的查询结果,主要包括: mysql_fetch_array():从结果集中取得一行作为关联数组或索引数组,或二者兼有 mysql_fetch_row():...

    flutter_background_fetch:IOS和Android均在后台进行定期回调。 包括Android Headless机制

    颤动background_fetch 通过 , 创建者Background Fetch是一个非常简单的插件,它将每隔15分钟在后台唤醒一个应用程序,从而提供较短的后台运行时间。 每当发生后台获取事件时,此插件就会执行您提供的callbackFn 。 ...

    Hibernate教程15_关联关系中的CRUD Cascade_Fetch

    在本教程中,我们将深入探讨Hibernate中的关联关系及其在CRUD操作中的应用,特别是关于Cascade和Fetch策略。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库交互...

    fetchAll()与mysql_fetch_array()的区别详解

    通过上述分析,我们可以看到,虽然mysql_fetch_array()和fetchAll()在基本功能上都是从数据库查询结果集中取得数据,但它们在使用上存在明显的差异。随着PHP的不断更新和优化,推荐使用PDO扩展的fetchAll()方法,这...

    MySQL mysql_fetch_array 函数取得查询结果中的一行作.docx

    以下是关于`mysql_fetch_array`函数的详细解释和示例。 `mysql_fetch_array`函数的语法如下: ```php array mysql_fetch_array(resource $result, [int $result_type = MYSQL_BOTH]) ``` 参数说明: - `$result`:...

    0_pubmed_API_fetch_v2.py

    0_pubmed_API_fetch_v2.py

Global site tag (gtag.js) - Google Analytics