在我的上一篇博客《【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的大牛们设计的时候。是处于什么考虑的?

以上的三个问题我眼下没有找到相关的资料来解答,假设哪位看到了,能够相互讨论一下.

最新文章

  1. 自用debug单元
  2. 基础!winForm客户端最常用的几个基本属性
  3. photoshop 常用快捷键大全
  4. bzoj1131: [POI2008]Sta
  5. 部署sharepointform验证
  6. Request中的方法调用
  7. Apache shiro的简单介绍与使用(与spring整合使用)
  8. Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决
  9. RecyclerViewSelectableAdapterDemo【封装BaseSelectableAdapter用于多选、单选,以及切换选中状态等功能】
  10. 【MongoDB异常】Exception authenticating MongoCredential解决方法
  11. [Swift]LeetCode676. 实现一个魔法字典 | Implement Magic Dictionary
  12. Django之模板基础
  13. java基础---->String中replace和replaceAll方法
  14. c# 字典
  15. 弱网测试之基于TP-LINK
  16. linux安装redis及主从复制、读写分离、哨兵模式
  17. sql study
  18. CentOS环境变量配置并生效
  19. node.js学习笔记(三)——事件循环
  20. [Selenium]通过JavaScript来对隐藏的元素执行操作

热门文章

  1. django 笔记13 CSRF
  2. [BZOJ3884] 上帝与集合的正确用法 (欧拉函数)
  3. 3.bind与仿函数以及普通函数
  4. AIX 6.1 Oracle 10G 数据库GoldenGate实施
  5. NodeJS学习笔记 (26)命令行设计-repl
  6. iOS开发——打包报错error: linker command failed with exit code 1
  7. [转载][来自csdn]RTS和CTS是什么意思?
  8. 使用PXE+NFS EFI引导安装RHEL6/7以及Kickstart安装
  9. PHP安全性防范方式
  10. Android 查看设备信息