使用Criteria或HQL有什么利弊?Criteria API是在Hibernate中表达查询的一种很好的面向对象的方式,但是有时候Criteria Queries比HQL更难以理解/构建。您何时使用标准以及何时使用HQL?在哪种用例中,您更喜欢什么?还是只是口味问题?
3 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
我最喜欢动态查询的条件查询。例如,动态添加一些订购或根据某些参数省去某些零件(例如限制)要容易得多。
另一方面,我将HQL用于静态和复杂查询,因为它更易于理解/阅读HQL。另外,我认为HQL功能更强大,例如对于不同的联接类型。
杨__羊羊
TA贡献1943条经验 获得超7个赞
Criteria是一种面向对象的API,而HQL则是字符串连接。这意味着适用面向对象的所有好处:
在其他所有条件相同的情况下,OO版本不太容易出错。任何旧字符串都可以追加到HQL查询中,而只有有效的Criteria对象才能将其放入Criteria树中。实际上,条件类受到更多的限制。
使用自动完成功能,OO更容易发现(因此,至少对于我来说更易于使用)。您不一定需要记住查询的哪一部分去了哪里。IDE可以帮助您
您也不需要记住语法的细节(例如哪些符号在哪里)。您只需要知道如何调用方法和创建对象。
由于HQL非常像SQL(大多数开发人员已经很了解),所以这些“不必记住”的参数就没有那么重要了。如果HQL更加不同,那么这将更加重要。
添加回答
举报
0/150
提交
取消