我是hibernate的新手。我看到一些查询示例是用HQL编写的,有些是使用条件和投影编写的。我google了一下,发现很少有关于何时使用HQL以及何时使用标准的信息。哪一个是更优选的方式,为什么?
答案 0 :(得分:5)
如果您的查询在where子句中需要动态数量的字段,并且您不了解先验,请使用条件。如果您的查询始终具有相同的where子句,但您可能可以替换值,请使用hql。
您也可以在后一种情况下使用标准。
重点是不要使用一串字符串连接动态构造你的hql where子句。
答案 1 :(得分:0)
我更喜欢hql over criteria并建议尽可能使用hql。
使用hql,您可以创建命名查询,这些查询在启动时进行解析,如果有错误,可以提供早期反馈。我相信预解析也会使它们在运行时更有效率。
我还认为hql比标准代码更具可读性。