【问题标题】:HQL vs. SQL / Hibernate netbeans HQL editorHQL 与 SQL / Hibernate netbeans HQL 编辑器
【发布时间】:2011-05-08 22:48:02
【问题描述】:

我正在教我自己休眠,我很困惑为什么我不能只写简单的 SQL 查询。

我发现它使用起来比普通 SQL(我习惯的)更令人困惑

另外:我觉得 NetBeans HQL 编辑器很烦人,我很难在 HQL 和 SQL 中生成正确的查询,为什么显示的 SQL 与实际的 SQL 语句不同?

那么为什么要使用它呢? - 众所周知,hibernate 资源非常广泛,我相信 hibernate 是我们的应用程序经常耗尽内存的原因,例如在重新部署的过程中...

我很想知道为什么我应该使用 Hibernate 而不是普通的 SQL (mysql) 语句!?

也许一个很好的休眠查询链接会很好;),我正在使用这个 atm:

但也对解释查询设置、映射、底层构造等的任何好的链接感兴趣。

最好的问候 亚历克斯

【问题讨论】:

    标签: sql hibernate web-applications netbeans hql


    【解决方案1】:

    HQL 是面向对象的,其目的是处理代表数据库表的 Java 对象。 一个基本优点是您可以在 HQL 查询中放置像 :orderNumber (使用冒号 simbol)这样的占位符并替换为变量的值。例如:

    int orderNumber = 685412;
    List<Order> l= 
        session.createQuery("from Order where orderNumber = :orderNumber")
        .setParameter("orderNumber",orderNumber).list();
    

    这样你就可以简单地修改orderNumber,避免经典

    String query = "select * from Order where orderNumber = " + orderNumber + "...";
    

    如果您将数据库迁移到另一个 DBMS,使用 MySQL 语法的 Morover 有时会使您的代码无法重用。 无论如何,我仍然不太相信 HQL 的偏好。

    Here你可以找到完整的语法定义。

    【讨论】:

    • 谢谢你。 - 只是另一个问题,所以每个 .hbm.xml 文件都有一个相应的 java 文件,只需要具有相同的名称就可以了!? - 如果我想编写一个最多涉及三个表的查询,我是否必须在每个查询中编写该链接,或者我可以为每个查询编写一个 java 函数或类似的函数,例如 helper.java 文件!?
    • 也许有人能告诉我更多关于文件设置的信息,因为我正在尝试了解一个非常全面的现有 Web 应用程序 (cyclos)。现在它们包含了很多 java 文件来处理数据库访问,我发现很难遵循流程。你会使用什么 exampleDao.java 文件,例如??
    • -“每个 .hbm.xml 文件都有一个相应的 java 文件,只需要具有相同的名称”-> 是;也许不需要同名(我不确定),但强烈推荐。在 hibernate.cfg.xml 中,您必须放置映射条目,例如
    • -“如果我要编写一个查询,最多涉及三个表,我是否必须在每个查询中编写该链接”-> 哪个链接?我不明白。 - “性能” -> 我认为为了避免低性能,您必须进行精确查询,因为 intead Hibernate 会级联检索由外键链接的其他表中的所有数据。
    • 如果我必须在我在休眠中编写的每个查询中编写表连接,或者如果有可能/方便为此编写一个 java 函数!? - 感谢你 2 的那些消息/答案
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2020-10-04
    • 1970-01-01
    • 2016-02-28
    • 2012-02-15
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多