在hibernate中命名查询的优点?

时间:2011-10-14 14:54:17

标签: hibernate

我正在使用hibernate并希望使用命名查询。但我不知道这是否是一个好的解决方案?请告诉我命名查询的优点。

编译命名查询时? 我们可以直接更改部署在应用服务器中的hbm文件中的命名查询吗?

请帮帮我。

谢谢!

2 个答案:

答案 0 :(得分:35)

在实例化SessionFactory时编译命名查询(因此,基本上,当您的应用程序启动时)。

明显的优势因此,当时所有命名查询都经过验证,而不是在执行时失败。另一个优点是,他们轻松( - ier)维护 - 当然对于复杂的查询。

缺点是命名查询无法在运行时自定义 - 您当然可以定义/提供参数,但除此之外,您定义的是您的内容会得到;你甚至无法改变排序。另一个缺点是,无法在正在运行的应用服务器中更改命名查询,而无需重新加载SessionFactory

答案 1 :(得分:22)

优势

  • 在应用启动时编译和验证
  • 比嵌入代码中的字符串文字更容易维护
  • 无需更改代码即可使用和替换HQL和本机SQL查询(无需重新编译代码)

<强>缺点

  • 静态
  • 使用本机SQL查询的结果集映射有时很麻烦

所以,我认为你应该在代码中更喜欢命名查询而不是字符串文字。当您在运行时需要某种动态查询创建时,您应该查看Hibernate Criteria API。 Hibernate Criteria并不总是简单易用,但你绝对应该使用它而不是在运行时生成查询字符串。

HTH