hibernate问题高分求助!!

chen_2001 2010-05-20 09:41:20
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问题高分求助!!
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_2001 2010-06-05
  • 打赏
  • 举报
回复
还是没有解决
nlogntime 2010-05-30
  • 打赏
  • 举报
回复
你使用的sql是怎样?
chen_2001 2010-05-30
  • 打赏
  • 举报
回复
我不大希望采用延迟加载,因为我的查询都封装好了
chen_2001 2010-05-30
  • 打赏
  • 举报
回复
我没怎么用SQL,根据ID查询基本上是使用下面的方法:

public T findById(Serializable id) {
Session session = getSession();
Transaction tx = null;
T result = null;
try {
tx = session.beginTransaction();
result = (T) session.get(clazz, id);//这里会产生许多查询,严重影响性能
tx.commit();
return result;
} catch (RuntimeException re) {
log.debug("find error");
tx.rollback();
return result;
} finally {
session.close();
}
}
yousite1 2010-05-27
  • 打赏
  • 举报
回复
延迟加载不会把属性为关联的对像读取出来.
而只读取简单属性的表字段值,不知道这么说你会不会明白.
读取的时侯如果只读一张表,那效率应该没什么问题,主要是看表里的数据量多不多,
如果转多,采用分页读取效率就不会有什么问题了.
chen_2001 2010-05-24
  • 打赏
  • 举报
回复
我觉得延迟加载最终还是会进行大量查询啊

如何做到把“不会用到的数据不进行查询”?
chen_2001 2010-05-20
  • 打赏
  • 举报
回复
其实我数据库数据量也不大,100条左右,或者更少
通过这种方式查询,session.get(class, id)
ACMAIN_CHM 2010-05-20
  • 打赏
  • 举报
回复
你的SQL语句是什么?
一般是添加相应索引以提高查询速度。
yangxiao_jiang 2010-05-20
  • 打赏
  • 举报
回复
优化查询逻辑

使用延迟加载,把不会用到的数据不进行查询。

另外,应该是执行了大量的重复查询。看看是否有必要。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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