我正在使用hibernate并希望使用命名查询。但我不知道这是否是一个好的解决方案?请告诉我命名查询的优点。
编译命名查询时? 我们可以直接更改部署在应用服务器中的hbm文件中的命名查询吗?
请帮帮我。
谢谢!
答案 0 :(得分:35)
在实例化SessionFactory时编译命名查询(因此,基本上,当您的应用程序启动时)。
明显的优势因此,当时所有命名查询都经过验证,而不是在执行时失败。另一个优点是,他们轻松( - ier)维护 - 当然对于复杂的查询。
缺点是命名查询无法在运行时自定义 - 您当然可以定义/提供参数,但除此之外,您定义的是您的内容会得到;你甚至无法改变排序。另一个缺点是,无法在正在运行的应用服务器中更改命名查询,而无需重新加载SessionFactory 。
答案 1 :(得分:22)
优势
<强>缺点强>
所以,我认为你应该在代码中更喜欢命名查询而不是字符串文字。当您在运行时需要某种动态查询创建时,您应该查看Hibernate Criteria API。 Hibernate Criteria并不总是简单易用,但你绝对应该使用它而不是在运行时生成查询字符串。
HTH