在hibernate中命名查询的优点?

use*_*904 29 hibernate

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

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

请帮我.

谢谢!

Chs*_*y76 36

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

因此,显而易见的优点是,所有命名查询都在那时进行验证,而不是在执行时失败.另一个优点是它们很容易( - )维护 - 当然对于复杂的查询.

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


tsc*_*cho 22

好处

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

缺点

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

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

HTH