Hibernate检索策略是什么

技术Hibernate检索策略是什么本篇内容介绍了“Hibernate检索策略是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

本文介绍了“什么是Hibernate搜索策略”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

Hibernate检索策略包括类级别检索策略和关联级别检索策略。

类检索策略包括即时检索和延迟检索,默认检索策略为即时检索。在Hibernate映射文件中,检索策略是通过在类上配置惰性属性来确定的。对于Session的检索方式,类级检索策略只适用于加载方式;也就是说,对于get和qurey检索,将立即加载持久对象,而不管lazy是假还是真。一般来说,我们检索对象只是为了访问它们,所以立即检索是通常的选择。因为当无法检索对象时,load方法会引发异常(在立即检索的情况下。),我个人不建议使用负载检索;因为类中的惰性属性也会影响多对一和一对一的检索策略,所以使用load方法就更没有必要了。

层次检索策略包括即时检索、延迟检索和紧急左外连接检索。对于相关性级别的检索,可以分为一对多和多对多的情况,多对一和一对一的情况。

集合配置通常用于一对多和多对多关联。设置惰性和外部连接属性,它们不同的值绝对决定了检索策略。

1.立即检索:这是一对多的默认检索策略,其中lazy=false,outer-join=false。虽然这是默认的检索策略,但是如果关联的集合没有用,那么就不要使用这种检索方法。

2.延迟检索:lazy=true,outer-join=false(outer-join=true没有意义。这是首选的检索方法。

3.急左外联接检索:lazy=false,outer-join=true此时,这种检索策略只适用于依赖id检索(load,get)的集合检索。),但不进行查询(它将采用立即检索策略。与立即检索相比,这种检索策略减少了一条sql语句,但在Hibernate中,只有一个集合可以配置为outer-join=true。

多对一和一对一检索策略通常使用多对一和一对一配置。多对一中要配置的属性是外连接,同时需要配置与一方关联的类的惰性属性(多对一中配置不是惰性的。他们的组合检索策略如下:

1.outer-join=auto:这是默认值,如果lazy=true则延迟检索,如果lazy=false则紧急离开outer join检索。

2.outer-join=true:与懒惰无关,所有搜索都是紧急左外连接。

3.outer-join=false:如果lazy=true,则是延迟检索;否则,就是立即检索。

可以看出,默认情况下(外部连接=自动,惰性=假。),通过紧急左外连接搜索关联的单侧对象Hibernate。在我看来,在很多情况下,我们不需要在一边加载关联的对象(很可能我们需要的只是id。关联对象的。此外,如果关联的对象也是通过紧急左外连接进行搜索,那么select语句中会有多个外连接表,如果数量较多,会影响搜索性能,这也是Hibernate通过hibernate.max_fetch_depth属性控制外连接深度的原因。对于紧急左外连接检索,查询的集合检索不适用,将采用立即检索策略。

Hibernate检索策略需要根据实际情况进行选择。对于即时检索和延迟检索,它们的优点是select语句简单(每个表一条语句),查询速度快,缺点是关联表时需要多个select语句,增加了访问数据库的频率。因此,在选择即时检索和延迟检索时,我们可以考虑使用批处理检索策略来减少select语句的数量(配置批处理大小属性)。对于左切外连接的搜索,优点是select语句少,缺点是select语句的复杂度增加,多个表之间的关联将是一个耗时的操作。另外,配置文件是死的,但程序是活的,可以根据程序中显示的需求指定检索策略(可能经常需要在程序中显示紧急左外连接检索)。为了了解检索策略的配置情况,您可以配置show_sql属性来查看程序运行时Hibernate执行的sql语句。

“什么是Hibernate搜索策略”的内容到此结束。感谢您的阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133792.html

(0)

相关推荐

  • 如何使用dtb方式启动内核

    技术如何使用dtb方式启动内核这篇文章给大家介绍如何使用dtb方式启动内核,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。主要使用dtb方式启动LINUX内核的过程。采用DTB方式启动LINUX内核,

    攻略 2021年11月2日
  • ckeditor粘贴word图片且图片自动上传组件

    技术ckeditor粘贴word图片且图片自动上传组件 ckeditor粘贴word图片且图片自动上传组件?
    项目需求可发布文章 需求涉及到富文本编辑器 经过查阅我选择了较为简便 不需要后端支持可独立完

    礼包 2021年12月1日
  • php数据类型的永久转换函数是哪个

    技术php数据类型的永久转换函数是哪个本篇内容主要讲解“php数据类型的永久转换函数是哪个”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数据类型的永久转换函数是哪个”吧

    攻略 2021年12月13日
  • avue-crud遮罩层(avue-crud组件操作栏不显示)

    技术avue-crud多级复杂的动态表头怎么实现这篇文章主要讲解了“avue-crud多级复杂的动态表头怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“avue-c

    攻略 2021年12月16日
  • GBase8s cm配置方法有哪些

    技术GBase8s cm配置方法有哪些本篇内容介绍了“GBase8s cm配置方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

    攻略 2021年11月12日
  • 如何理解php中echo

    技术如何理解php中echo这篇文章主要介绍“如何理解php中echo”,在日常操作中,相信很多人在如何理解php中echo问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解php中e

    攻略 2021年10月22日