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)

相关推荐

  • ASP.NET数据库连接字符串的分析是怎样的

    技术ASP.NET数据库连接字符串的分析是怎样的这期内容当中小编将会给大家带来有关ASP.NET数据库连接字符串的分析是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、使用Ol

    攻略 2021年12月1日
  • opencv如何区分相近的颜色(opencv如何分别各种图片)

    技术颜色空间及其OpenCV实现是怎么样的颜色空间及其OpenCV实现是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。导读 对图像的颜色空间做了一

    攻略 2021年12月15日
  • windows中信号量和互斥量的区别是什么

    技术windows中信号量和互斥量的区别是什么本篇内容介绍了“windows中信号量和互斥量的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    2021年11月9日
  • drupal安全漏洞分析(drupal漏洞分析)

    技术Drupal核心远程代码执行漏洞分析预警是怎样的Drupal核心远程代码执行漏洞分析预警是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。0x00

    攻略 2021年12月20日
  • 僵尸粉自助下单,抖音找人刷粉是什么意思?

    技术僵尸粉自助下单,抖音找人刷粉是什么意思?僵尸粉自助下单,抖音找人刷粉是什么意思?你是否经常拍抖音短视频却无法上热门,你是否辛苦专研却没有什么收获!这些都是因为你没有掌握对抖音上热门的方法,方法不对,埋头苦干只能南辕北

    测评 2021年11月11日
  • Linux系统如何安装ST-Link v2烧录环境

    技术Linux系统如何安装ST-Link v2烧录环境这篇文章主要介绍Linux系统如何安装ST-Link v2烧录环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、首先我们需要安装必要的库和

    攻略 2021年11月18日