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)

相关推荐

  • 如何防止人为误操作MySQL数据库

    技术如何防止人为误操作MySQL数据库这篇文章主要介绍“如何防止人为误操作MySQL数据库”,在日常操作中,相信很多人在如何防止人为误操作MySQL数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年10月23日
  • javascript变量命名是否区分大小写

    技术javascript变量命名是否区分大小写这篇文章主要介绍了javascript变量命名是否区分大小写,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    攻略 2021年11月18日
  • Data Guard中Snapshot Standby Database配置是怎样的

    技术Data Guard中Snapshot Standby Database配置是怎样的Data Guard中Snapshot Standby Database配置是怎样的,相信很多没有经验的人对此束手无策,为此本文总结

    攻略 2021年11月12日
  • 0元免费抖音刷粉-可以刷抖音赞吗

    技术0元免费抖音刷粉-可以刷抖音赞吗0元免费抖音刷粉-可以刷抖音赞吗
    一定要持续更新内容,长期坚持,不断输出价值和塑造你的影响力,这样粉丝的粘度才会高,他们会很期待看到你的新作品。你看那些粉丝上千万的大号,他们就一直保持

    测评 2021年11月13日
  • 《LeetCode刷题笔记》Day1——数组

    技术《LeetCode刷题笔记》Day1——数组 《LeetCode刷题笔记》Day1——数组------------恢复内容开始------------
    二分查找
    只要是顺序数组,都可以考虑用一下二分

    礼包 2021年12月14日
  • 我国的少数民族,我国特有的少数民族有哪些

    技术我国的少数民族,我国特有的少数民族有哪些蒙古族那达慕大会;锡伯族抹黑节;彝族的“火把节”;瑶族达努节;藏族望果节。1、瑶族达努节达努节是马山、都安、巴马、平果、隆安、大化等地自称“布努”的瑶族传统节日。又名二九节、祖

    生活 2021年11月1日