【发布时间】:2017-02-14 14:19:23
【问题描述】:
我有一个非常简单的查询来从表中选择所有行。在休眠状态下,它总是需要大约 17-18 秒。我指定,show_sql 是真的。我直接将sql命令复制到mysql,耗时0.00022秒……
这是查询:
SELECT
organizati0_.id AS id1_5_,
organizati0_.adminList AS adminLis2_5_,
organizati0_.demoAccount AS demoAcco3_5_,
organizati0_.disabled AS disabled4_5_,
organizati0_.enduserCredits AS enduserC5_5_,
organizati0_.name AS name6_5_,
organizati0_.pushNotificationRoom AS pushNoti7_5_,
organizati0_.totalLicenses AS totalLic8_5_,
organizati0_.usedLicenses AS usedLice9_5_
FROM
organization organizati0_
这是查询代码:
Session session = ThreadSessionHolder.getThreadSession();
Query query = session.createQuery("from Organization ");
List list = query.list();
return list;
有什么想法吗?这让我发疯了
【问题讨论】:
-
这更有可能是从服务器检索数据并在此处创建错误的 java 对象。请注意,您正在拉动整个表格
-
组织实体上有关联吗?难不成他们中的一些人是急切的?记录数是多少?
-
如果您在 MySql 上进行查询总是会很快,那么当您要求 hibernate 返回整个表时,请考虑每个组织对象的创建。你可以放上你的组织表,看看我们是否可以让它表现得更好,比如如果你有一些关系,你可以把它们设置为惰性,你的组织对象会更轻。
-
我所有的引用都用惰性获取进行了注释。和@JamesJithin,我已经完成了那里的每一个答案......