Hibernate查询优化

本文介绍Hibernate查询性能优化的四个关键方面:降低数据库访问频率、避免加载不必要的数据、避免报表查询数据占用缓存以及减少SELECT数据中的字段。文章还详细解释了如何通过使用迭代查询和查询缓存等技术来提升性能。

查询性能优化

 

Hibernate可从下面几个方面来优化查询性能:

   1.   降低访问数据库的频率,减少select语句的数量

  • 使用迫切左外连接或迫切内连接检索策略

  • 对延迟检索或立即检索策略设置批量检索数目

  • 使用查询缓存

   2.   避免加载程序不需要的访问数据

  • 使用延迟检索策略

  • 使用集合过滤,过滤重复的数据

   3.   避免报表查询数据占用缓存。实现手段为利用投影查询功能,查询出  实体的部分属性

   4.    减少select数据中的字段,从而降低访问数据库的数据量。实现手段为利用Query的iterate()方法

 

iterate()方法:      

  • iterate()和list()都可以用来作为Query的查询,但是在有些情况下,iterate()在一定的程度上可以提高查询性能,Query的iterate()方法首先检测ID字段,然后根据ID字段到Hibernate的第一级缓存(Session缓存)及二级缓存(前提是打开了二级缓存)中去查找匹配的Customer对象,要是存在,就直接把它加入到查询结果集中,否则就会执行额外的select语句,根据ID字段到数据库中检索对象。

 

 

查询缓存:     对于经常使用的查询语句,如果启用了查询缓存,当第一次执行查询语句的时候,Hibernate会把查询的结果放在查询缓存中。以后再次执行该查询语句的时候,只要从缓存中获得查询结果,从而提高查询性能。 值得注意的是,要是结果中包含实体 ,查询缓存只会存放实体的OID,而对于投影查询,查询缓存会存放所有的数据值。                                  

查询缓存适合下面情况:

  1. 经常使用查询语句的地方

  2. 很少对与查询语句检索到的数据进行插入,删除或更新

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值