在hbm文件中编写HQL有什么好处?

时间:2012-05-11 04:45:48

标签: c# nhibernate

我在hbm文件中编写HQL,就像这样

<query name="GetFabric">
        <![CDATA[Select F.FabricName,FS.FabricSeasonName from Fabric F,FabricSeason FS where F.FabricSeasonID=FS.ID]]>
    </query>

但我们可以在代码文件中编写查询,那么编写HQL(HBM文件或代码文件)的更好方法是什么

3 个答案:

答案 0 :(得分:6)

我将HQL嵌入HBM文件的主要原因很简单: -

  

在构建会话工厂时解析/检查/缓存HQL元数据

这意味着如果您有错误,您将在代码启动时了解它们。 HQL也被缓存并准备运行。在代码中使用HQL意味着首次运行时需要解析和缓存HQL,因此第一次运行代码会稍慢。

答案 1 :(得分:0)

如果查询需要在单个函数中执行,我会将其嵌入到代码中,但是如果我需要在不同的项目/类中运行此查询,则将其放在hbm.xml中

答案 2 :(得分:0)

Hibernate映射文件中的命名查询是:

  • 比分散在Java代码中的查询更容易维护
  • 全局可访问,因此您可以一次定义查询并在代码中多次使用它
  • 更安全,它们可以防止SQL注入攻击