hibernate查询的过程疑问

未来纪元 2011-12-30 03:48:23
一直都用的是hibernate的hql和sql查询,新做项目用了ZK框架和jbpm3以及hibernate,其中hibernate用了jbpm3自带的,但是项目运行速度很慢。
疑问:
当查询一个表A时,是否无论是hql还是sql查询,运行过程是先查询这个表,然后查询与这个表有关联的表B,再继续查与B表有关联的表,。。。。。。,一直到没有关联表。而且如果是双向关联是否还要再反过来查一下。这样会不会让系统速度变慢
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
未来纪元 2012-01-06
  • 打赏
  • 举报
回复
可能问的不是很清楚
Java18 2011-12-30
  • 打赏
  • 举报
回复
这是关于sql语句的问题
yangjunlyy 2011-12-30
  • 打赏
  • 举报
回复
表中的主外键关系在entity的映射中有选择的配置one-to-one/one-to-many/many-to-many关系,并且使用lazy可以过滤掉许多不必要的查询sql
loveofmylife 2011-12-30
  • 打赏
  • 举报
回复
你是说数据库如何处理表连接吗?
sql表连接可以分为笛卡尔连接,条件连接,等值连接,自连接,外连接等
根据运行机制基本上可以分为
1)嵌套循环连接,这种连接会执行NESTED LOOPS的操作
2)合并连接,先对各个子表进行排序,然后合并每个结果集,是一个非相关联合性操作
3)HASH连接,先拿的第一个子集,然后根据连接条件生成哈希表,然后根据该hash表读第二个子集进行探测
只是了解oracle,所以上面的运行机制都是针对oracle说的
未来纪元 2011-12-30
  • 打赏
  • 举报
回复
期待牛人,高手
未来纪元 2011-12-30
  • 打赏
  • 举报
回复
先不说缓存,把缓存去掉,假设hibernate只有数据库和增删改查操作
xinlan1022 2011-12-30
  • 打赏
  • 举报
回复
肯定要延迟加载
yangjunlyy 2011-12-30
  • 打赏
  • 举报
回复
适当的使用lazy会使hibernate查询更高效哦
只供学习交流使用,版权所有,请勿侵权。有任何疑问可以通过下文的邮件或QQ联系我本人。 这是我做的第一个Web网站,前台页面主要利用JSP、jQuery(数据验证),部分页面用到Ajax。控制转发层采用Servlet,数据访问层采用Hibernate(bean和dao是由Hibernate逆向工程自动生成)。 系统采用分层架构,由上到下分为视图层、控制转发层、业务层、服务层、数据库访问层。运用了一些基本设计模式,系统可扩展性还是非常良好的。 具体安装运行方法见readme.txt文件。附带了建表sql文件。最好先看下文档目录下的架构文档、需求概要文档以及几个类图,有助于快速理解整个项目。下面是readme.txt中的内容: 本项目是一个健身俱乐部系统,面向三类:会员(家庭会员和个人会员)、俱乐部经理、俱乐部服务员。 一、项目尚存在的缺陷: 1.上次支付日期,记录的是上次缴纳月供的时间。扣除月供由一个SQL存储过程完成。 2.Cookie记住密码 3.活动海报提供点击看大图功能 4.添加活动的日期用jQuery日期插件(datepicker) 5.为表格添加更多的CSS样式,让表格更美观点 6.某些页面应该提供分页显示(时间紧没处理) 7.由于是第一次做网站,且时间比较紧(这段时间期末考试),所以对于一些细节问题,如防止表单重复提交、某些页面的访问权限控制(基本的访问权限控制已经实现,但是有些比如像俱乐部服务员可以不登陆直接通过URL访问会员管理页面,而实际上是应该不允许的。实现也非常简单,使用过滤器对指定页面处理即可,有点累了,不再折腾了) 8.页面风格统一的问题,比如登录页面、注册页面和主页面的风格可能不太统一 PS: 上面几点是我个人目前认为的不足之处,具体的就请各位自己斟酌了。另外除了注册页面也非常详细的数据验证,其他页面如添加活动页面基本没有数据验证(不想重复劳动,代码基本非常类似). 代码中用到了较多的jQuery和部分Ajax(借助jQuery实现),在阅读代码的时候如果不熟悉jQuery和Ajax的话,还是先去稍微学习几个入门实例较好。 二、运行方式: a. 创建数据库:我用的是MySQL 5.1版本,不同版本之间可能存在不兼容问题,可能得对sql文件做少许修改。先去MySQL下(cmd或可视化工具)下创建一个数据库health_club。然后利用mysql命令导入sql文件: mysql -u root -p health_club < health_club.sql b. 将源代码下的整个文件夹复制到Tomcat的app目录下,我用的是Hibernate ORM框架,且我的MySQL密码是123456。如果你的MySQL密码不是123456,则必须去src目录下打开hibernate.cfg.xml,找到下面这行: 123456 修改密码为你的数据库对应密码就好了 c. 在浏览器中访问:http://localhost:8080/HealthClubProject/index.jsp 即可访问健身俱乐部系统主页 d. 当然也可以直接在MyEclipse中导入项目,我用的是MyEclipse Version 8.5 版权所有,只供学习交流使用,欢迎指正,有任何疑问可以通过下面方式联系我。 email feichexia@yahoo.com.cn QQ 735973629@qq.com

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧