JPA和Hibernate-条件与JPQL或HQL

使用Criteria或HQL有什么利弊?Criteria API是在Hibernate中表达查询的一种很好的面向对象的方式,但是有时候Criteria Queries比HQL更难以理解/构建。


您何时使用标准以及何时使用HQL?在哪种用例中,您更喜欢什么?还是只是口味问题?


富国沪深
浏览 1011回答 3
3回答

慕运维8079593

我最喜欢动态查询的条件查询。例如,动态添加一些订购或根据某些参数省去某些零件(例如限制)要容易得多。另一方面,我将HQL用于静态和复杂查询,因为它更易于理解/阅读HQL。另外,我认为HQL功能更强大,例如对于不同的联接类型。

杨__羊羊

Criteria是一种面向对象的API,而HQL则是字符串连接。这意味着适用面向对象的所有好处:在其他所有条件相同的情况下,OO版本不太容易出错。任何旧字符串都可以追加到HQL查询中,而只有有效的Criteria对象才能将其放入Criteria树中。实际上,条件类受到更多的限制。使用自动完成功能,OO更容易发现(因此,至少对于我来说更易于使用)。您不一定需要记住查询的哪一部分去了哪里。IDE可以帮助您您也不需要记住语法的细节(例如哪些符号在哪里)。您只需要知道如何调用方法和创建对象。由于HQL非常像SQL(大多数开发人员已经很了解),所以这些“不必记住”的参数就没有那么重要了。如果HQL更加不同,那么这将更加重要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java