休眠中命名查询的优点?

Posted

技术标签:

【中文标题】休眠中命名查询的优点?【英文标题】:Advantages of Named queries in hibernate? 【发布时间】:2011-10-14 14:54:17 【问题描述】:

我正在使用休眠并想使用命名查询。但我不知道这是否是好的解决方案?请告诉我命名查询的优势。

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

请帮帮我。

谢谢!

【问题讨论】:

【参考方案1】:

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

因此,明显的优势是,您的所有命名查询都在当时得到验证,而不是在执行时失败。另一个优点是它们易于(-ier)维护 - 尤其适用于复杂的查询。

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

【讨论】:

【参考方案2】:

优势

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

缺点

静态 本地 SQL 查询的结果集映射有时很麻烦

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

HTH

【讨论】:

以上是关于休眠中命名查询的优点?的主要内容,如果未能解决你的问题,请参考以下文章

命名查询休眠

命名休眠查询的“命名查询未知”?

具有聚合函数的休眠命名查询

使用 Like 和 % % 运算符的休眠命名查询?

休眠命名查询不知道错误

从休眠命名查询调用存储过程时出现 SQLException 00604 & 01003