Hibernate命名查询与会话查询 - 寻找意见

时间:2015-07-13 19:02:44

标签: sql-server hibernate

注意:此Q正在寻找Hibernate命名查询和普通会话查询的比较。 Hibernate Criteria在此Q的上下文中无关紧要。

据我所知,命名查询是系统启动时解析过的查询,可以在整个应用程序的任何地方使用。所以 - 在命名查询中,对于该查询的每个调用者,不会从头开始解析查询,这是命名查询的主要收益。

然后 -

  • Hibernate如何为命名查询和普通查询操作缓存有什么区别?如果是这样 - 这是什么?

  • 将普通的Hibernate查询转换为命名查询是否有任何损失?

我和同事讨论过。他认为,在我将普通查询转换为命名查询之前,我应该设置一些指标并编写测试,以证明命名查询的表现更好。

我认为这 - 生成指标和编写测试只是为了测量命名查询如何比普通查询更好地执行,这只不过是把时间浪费在无用的东西上。已经显示 - 命名查询存在的原因只是解析查询。它在数据库中提取/更改的数据是无关紧要的。并且,许多开发人员正在使用Hibernate命名查询。

我的Q是 -

  • 我是否遗漏了与此讨论相关的命名查询内容?

  • 关于如何处理这种情况的意见?我正在看的选项是i。)放弃做任何事情 - 让查询原样,ii。)只是更改命名查询 - 如果不喜欢的话还没有烧掉我太多的时间iii。)做那些测试 - - 如果我认为这是一个选项。

TIA。

1 个答案:

答案 0 :(得分:0)

简短回答 - 如果可以,请使用它。但是,如果您已经使用涵盖其功能的测试正常运行的查询,我建议您不要进行转换。

可以在此处找到解决此问题的另一篇SO帖子: Advantages of Named queries in hibernate?