本文介绍了“什么是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