【发布时间】:2012-01-16 10:26:58
【问题描述】:
考虑以下查询。
SELECT * FROM T1 WHERE T1.id = (SELECT id1 FROM T2 where T2.id1 = (SELECT id2 FROM T3))
AND T1.anotherId IN (SELECT id3 FROM T3);
我猜 HQL 比使用带有 DetachedCriteria 的 Criteria API 更有效?
我已经在我的项目中实现了(大部分)标准,它看起来很 OOP。对眼睛也更容易(这取决于感知)
想法?
【问题讨论】:
-
这不是一个建设性的问题。
-
这个查询可以在没有任何单个子查询的情况下使用连接重新实现。 HQL 和标准不应该有任何区别:大部分时间都花在执行查询和获取结果上,无论您使用什么来构建查询。如果您和您的同事发现标准比 HQL 更具可读性(我不同意),请使用标准。
-
效率在什么方面? a)要写入的字符,b)执行时间,c)解析时间? HQL 在 a) 中明显获胜,但 b) 和 c) 应该几乎相等
-
要写的字符,是的。但我本以为它也会在解析时间上获胜。可能是我错了。 JB ,是的,我是用连接写的。 dev.mysql.com/doc/refman/5.0/en/rewriting-subqueries.html
标签: java hibernate criteria-api