【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1494字,纯文字阅读大概需要3分钟。
内容图文
在我的上一篇博客《 【 java 】 itoo 项目实战之 hibernate 懒加载优化性能》中,我曾提到过学生数据有 2 万条,查询数据十分的慢,这是让人很受不了的事情,看着页面进度条一直转着圈圈,那种着急的感觉真的没法形容。最开始考虑着使用 lazy 来优化,因为前台框架的原因, lazy 优化并没有起到什么左右,后来就想着有 select new map 优化。我先来画画关于查询学生的级联树
这个树的意思就是查询学生的时候它的深度是 4 级。
在没有优化之前,使用的是 hibernate 的 hql 语句 : From Student where isDelete =? 执行语句的时候,会发出 467 条语句打印到控制台上,打的满屏都是,看控制台的时候,看着就感觉头晕。
优化的时候,选择用 selectnew map 进行优化,语句如下:
select newmap(S.id as id, S.name as name,S.comment as comment,S.remark asremark,S.accountAddress as accountAddress,S.code as code,S.email asemail,S.entranceDate as entranceDate,S.graduateSchool asgraduateSchool,S.identityCardID as identityCardID,S.classes.className asclassName,S.classes.institution.institutionName asinstitutionName,S.classes.institution.parentInstitution.institutionName asparentInstitution,S.classes.institution.schoolLevel.levelName aslevelName,S.classes.institution.id as institutionId,S.professional.professionalCodeas professionalCode) from Student S where S.isDelete =:isDelete
在打印语句的时候是 1 条。看控制台打印出来的结果还是挺舒服的。
但是他们的时间差如下:
从上表中可以看出,时间差得还是挺多的。在这里我有些事想不明白 :
1. 使用 new map 查询的时候,虽然只打印一条语句,它需要进行全表扫描,查询的次数并不少,而 hibernate 的 hql 语句把每次查询的语句都打印出来了。但是它的查询时间相对 new map 来说,为什么会变长呢?
2.hibernate 的 hql 语句级联查询时间过长的原因会不会跟 hibernate 的缓存有关系?每次查询结果都需要放到 1,2 级缓存中。
3. 关于 hibernate 的查询语句这样设计的原因是什么,当初 hibernate 的大牛们设计的时候,是处于什么考虑的?
以上的三个问题我目前没有找到相关的资料来解答,如果哪位看到了,可以相互讨论一下 .
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/tang_huan_11/article/details/47065293
内容总结
以上是互联网集市为您收集整理的【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询全部内容,希望文章能够帮你解决【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。