分享好友 最新动态首页 最新动态分类 切换频道
莆田seo接单/seo关键词排名优化价格
2024-12-27 12:37

   一、Hibernate的抓取策略

          Hibernate抓取策略是指当应用程序需要在关联关系间进行导航的时候,Hibernate如何获取关联对象的策略。

          Hibernate有如下几种抓取策略

             1、链接抓取(Join fetching):Hibernate 通过在select语句中使用out join来获取对象的关联实例或者关联集合。

             2、查询抓取(Select fetching):发送另外一条select语句抓取当前对象的关联实体或者关联集合。除非我们显示地指定lazy=”false”禁止延迟抓取,否则只有当我们真正访问了关联关系的时候才会执行第二条select语句。

             3、子查询抓取:另外发送一条SELECT 语句抓取在前面查询到(或者抓取到)的所有实体对象的关联集合。除非你显式的指定lazy="false" 禁止延迟抓取(lazyfetching,否则只有当你真正访问关联关系的时候,才会执行第二条select语句。

             4、批量抓取(Batch fetching) - 对查询抓取的优化方案, 通过指定一个主键或外键列表,Hibernate使用单条SELECT语句获取一批对象实例或集合。

          

          Hibernate会区分下列各种情况

             1、Immediate fetching,立即抓取 - 当宿主被加载时,关联、集合或属性被立即抓取。

             2、Lazy collectionfetching,延迟集合抓取- 直到应用程序对集合进行了一次操作时,集合才被抓取。(对集合而言这是默认行为。

             3、"Extra-lazy"collection fetching,"Extra-lazy"集合抓取 -对集合类中的每个元素而言,都是直到需要时才去访问数据库。除非绝对必要,Hibernate不会试图去把整个集合都抓取到内存里来(适用于非常大的集合)。

             4、Proxy fetching,代理抓取 - 对返回单值的关联而言,当其某个方法被调用,而非对其关键字进行get操作时才抓取。

             5、"No-proxy"fetching,非代理抓取 - 对返回单值的关联而言,当实例变量被访问的时候进行抓取。与上面的代理抓取相比,这种方法没有那么“延迟”得厉害(就算只访问标识符,也会导致关联抓取)但是更加透明,因为对应用程序来说,不再看到proxy。这种方法需要在编译期间进行字节码增强操作,因此很少需要用到。

             6、Lazy attributefetching,属性延迟加载 - 对属性或返回单值的关联而言,当其实例变量被访问的时候进行抓取。需要编译期字节码强化,因此这一方法很少是必要的。

         二、选择合理的抓取策略

         定制合理的抓取策略对系统的提升有很大的作用。

         查询抓取在N+1查询的情况下是极其脆弱的,因此我们可能会要求在映射文件中定义连接抓取(fetch=”join”)。

但是在映射文件中定义的抓取策略将会产生以下影响:通过get()或者load()方法获取数据。。只有在关联之间进行导航时,才会隐式的取得数据。

         条件查询,使用了subselect抓取的HQL查询

         不管使用哪种抓取策略,定义为非延时的类图会保证一定装载入内存,这就意味着一条HQL查询后紧跟着一系列的查询。

         所以我们一般是这样做:通常情况下,我们并不使用映射文件进行抓取策略的定制,更多的是,保持其默认值然后在待定事物中,适用HQL的左连接对其进行重载。

         

         Hibernate推荐的做法也是最佳实践:把所有对象关联的抓取都设为lazy!然后在特定事务中进行重载。

         这种考虑是基于:对象之间的关联式错综复杂的,有时候哪怕我们只是一个简单的load,也会导致很多对象被load出来!所以在Hibernate中,所有对象关联都是lazy的。

 

         四、Hibernate的批量抓取

         在Hibernate中,对于关联抓取,可以定义每次抓取数据的数量。批量地将数据载入内存,减少与数据库交互的次数。在应用程序中可以定义默认的关联抓取数量。

         Hibernate提供了两种批量抓取方案:类级别和集合级别。


         类级别的批量查询。如果一个Session中需要载入30个student实例,在student中拥有一个成员变量class,该class执行Class对象。如果lazy=“true”,如果们需要变量整个student集合,每一个student都需要getClass(),hibernate在默认情况下回执行30次select查询语句,得到Class对象。这个时候可以通过在映射文件的Class属性,batch-size。

         这样Hibernate将只需要执行两次查询即可:15,15。

         集合级别的批量查询。如果我们需要遍历Class所拥有的所有Student对象,在Session中需要载入30个Class对象,遍历Class集合将会引起30次Select查询,每次查询都会调用getStudents()。如果在Class的映射定义中,允许对Students进行批量抓取,则Hibernate就会预先加载整个集合。

最新文章
华为Mate60Pro如何开启5G模式
今天咱们就聊聊华为Mate60Pro如何开启5G模式的小技巧,不少朋友都在问这事儿,那咱们就一块儿看看。华为Mate60Pro作为华为的旗舰机型,支持5G网络是标配。想要开启5G模式,其实操作起来挺简单的。确保你的手机卡是5G套餐,这是前提条件。咱
SEO优化秘诀:有效提升网站搜索排名的实用技巧
  在当今数字化的时代,网站的搜索排名对于任何一家企业而言都至关重要。毕竟,大部分潜在客户在寻找产品或服务时,首先会依赖于搜索引擎。那么,如何让自己的网站在众多竞争者中脱颖而出,获得更高的搜索排名呢?下面,就让我们一起探索
百度极速版2024最新版本 v6.40.0.11 安卓官方版
第 18 楼 广东韶关客人 发表于: 2023/12/3 18:49:55 好,专门用来浏览网页的,不错。 支持( 14 ) 盖楼(回复) 第 17 楼 上海网友 发表于: 2023/11/11 23:09:11 还是极速版好用 支持( 17 ) 盖楼(回复) 第 16 楼 四川广元苍溪县客
酷派最新动态,引领科技创新,塑造未来智能生态
酷派发布最新新闻,积极引领科技创新,致力于塑造未来智能生态。该公司不断推出新技术和产品,以满足消费者日益增长的需求。酷派以其卓越的研发能力和技术实力,成为智能生态领域的佼佼者,不断推动行业向前发展。本文目录导读:酷派最新新
如何优化B站关键词排名:Bibi搜索排名实战攻略
在视频内容日益成为主流消费选择的今天,B站作为中国最流行的视频分享平台之一,成了许多内容创作者展示才华、分享知识的舞台。然而,在竞争激烈的网络环境中,如何提升自己视频内容的B站关键词排名,让目标观众更容易发现,成了许多UP主和
郭碧婷怀三胎了?穿孕妇裙步子笨重比向佐都壮,牵手逛街好恩爱
郭碧婷自从嫁入豪门就变成了全职家庭主妇,相比于当女明星的时候,消息也少了很多。很多人猜测郭碧婷在豪门中过得并不幸福,虽然钱足够,有婆婆向太把她当亲女儿一样宠爱,但是作为老公的向佐就多少有点不尽责了,屡屡被传出出轨,很多重要
经典俄罗斯方块黑白版免费下载
说起俄罗斯方块相信没有人会感到陌生,以往每到逢年过节时出去走亲戚,无聊的时候就会拿出那种老式的黑白游戏机玩上几局。如今黑白游戏机早已不见踪影,经典的俄罗斯方块却是经久不衰,那今天小编带来的就是《经典俄罗斯方块黑白版》,游戏
评选公开:上海专业白癜风医院排名“榜单推荐”白癜风症状,哪些不良习惯被认为是引发皮肤白斑的催化剂?
评选公开:上海专业白癜风医院排名“榜单推荐”白癜风症状,哪些不良习惯被认为是引发皮肤白斑的催化剂?上海白癜风医院排名:1、上海美申白癜风医院2、上海正规白癜风医院3、上海皮肤科医院4、上海专业的白癜风医院5、上海白癜风的治疗,
活动策划的10个维度
活动策划,是营销推广中的重要一环。品牌要想活起来,销售要想动起来,都离不开活动。像我们平时经常提到的事件营销、传播campaign、用户参与、终端促销、电商大促、品牌发布会、订货会、经销商大会……这些都属于活动的范畴。活动策划是一
英国留学条件有些什么 就读优势有哪些
英国大学是非常出名的,英国一直以传统优秀的教学而闻名世界,因此很多的同学都会选择前往英国进行留学,那么“英国留学条件有些什么”呢,让我们一起来简单的了解一下吧。1、学历要求高中留学:申请英国高中留学,学生通常需要完成初中阶
相关文章
推荐文章
发表评论
0评