hibernate 问题!

chen_2001 2010-06-06 04:51:40
A(1:N)B(N:N)C(N:N)D(N:N)E(N:1)F

A B C D E F表示6个表
1:N表示1对多
N:N表示多对多
N:1表示多对1

这样查询速度特别慢,如根据ID查询A的一条记录需要5秒以上,会产生几百条SQL

我没有使用延迟加载,所有lazy=false
表之间都使用双向关联的

请问大家有什么好办法?

hibernate问题高分求助!!
...全文
90 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ade子夜 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sgcl 的回复:]
发快了!应为:
建议:1)取消双向关联;2)直接用SQL;3)用数据库store procedure
[/Quote]

建议!!顶!
chen_2001 2010-06-07
  • 打赏
  • 举报
回复
请问sgcl:1)2)3)是联合使用还是可选性使用?
xinlan1022 2010-06-07
  • 打赏
  • 举报
回复
那你肯定要用延迟加载的
luiganqian 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sgcl 的回复:]
建议:1)取消双向关联;2)直接用SQL;3)用store precedure
[/Quote]
牛叉
宁静-夏天 2010-06-07
  • 打赏
  • 举报
回复
louzhu 你这样是属于过分的使用hibernate了,hibernate的级联使用是需要非常慎重的。
不是有点关系就要用上去的。这样你的项目会死的很惨,要不要都取出来多大的浪费啊。

个人推荐你考虑下前台的数据需求,除非紧耦合对象关系,而且往往 A出现B必须出现的情况才配置级联,而且大多使用lazy。你完全反着来。你不想在使用hibernate,倒像在测试hibernate。


复杂查询需求一般是通过native sql来处理的。
czmchen 2010-06-07
  • 打赏
  • 举报
回复
“根据ID查询A的一条记录需要5秒以上,会产生几百条SQL”

查询交给多的那边查

storm_1984 2010-06-07
  • 打赏
  • 举报
回复
学习.......
colin_pxx 2010-06-07
  • 打赏
  • 举报
回复
如果关联太多的话确实还不如直接用SQL
chenxizhiyi 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sgcl 的回复:]
发快了!应为:
建议:1)取消双向关联;2)直接用SQL;3)用数据库store procedure
[/Quote]

这位是高手,呵呵。

我喜欢直接写SQL,呵呵
xieshengjun2009 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gulang76 的回复:]
在数据表中建几个冗余字段
[/Quote]

[Quote=引用 3 楼 sgcl 的回复:]
建议:1)取消双向关联;2)直接用SQL;3)用数据库store precedure
[/Quote]
平淡面对 2010-06-06
  • 打赏
  • 举报
回复
发快了!应为:
建议:1)取消双向关联;2)直接用SQL;3)用数据库store procedure
平淡面对 2010-06-06
  • 打赏
  • 举报
回复
建议:1)取消双向关联;2)直接用SQL;3)用store precedure
gulang76 2010-06-06
  • 打赏
  • 举报
回复


在数据表中建几个冗余字段

67,513

社区成员

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

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