|
|
1
2
没有什么好处。在执行数据聚合和计算时,HQL的性能不会超过直接数据库查询。 结果如下:
在DB上的执行速度总是比在HQL中快。注意我说 总是 因为这是跛脚采取'取决于你的情况'的思路。如果它与数据和数据聚合有关,请在SQL中执行。 |
|
|
2
1
二级缓存中的对象仅由id检索,因此Hibernate将始终运行一个查询以获取id列表,然后从二级缓存或使用另一个查询读取这些对象。 另一方面,Hibernate可以缓存查询,并在某些情况下完全避免DB调用。但是,您必须考虑对查询中涉及的任何表所做的更改都会使其失效,因此您可能不会经常命中缓存。见 here 查询缓存工作方式的说明。 因此,如果查询是缓存的,则查询的开销为0,或者与在直接SQL中执行查询的开销大致相同。根据数据更改的频率,可以通过启用查询缓存来保存大量数据,也可以不保存任何数据。 如果您有大量的查询,并且可以容忍过时的结果,我认为最好对每x分钟过期一次的查询结果使用另一个缓存。 |
|
|
3
0
我能想到的唯一优点是ORM查询通常是在(prepared)语句级别缓存的,所以如果您多次执行相同的查询,那么您可能是在重用一个prepared语句。 但既然你特别要求 报告查询和性能 ,我想不出 实际的 优点(我忽略了这样一个事实,即您具有其他优点,如数据访问一致性、ORM查询与SQL(大多数情况下,使用HQL编写查询更容易)、数据类型转换等) |
|
|
4
-4
HQL是一种对象查询语言。SQL是一种关系查询语言。 |
|
|
Nico Pizzo · 子查询上的nhibernate联接 8 年前 |
|
|
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 8 年前 |
|
|
Stu · 具有特定类型的字符串外键的NHibernate映射 8 年前 |
|
|
Zout · 为Hibernate的HiLo算法管理的列生成ID 9 年前 |