我正在尝试对MySQL数据库执行查询。 查询相当复杂,它有5个内连接,包括1连接到自身和 它从2个不同的表中返回3条信息。 我们正在使用hibernate,直到现在我只使用它进行简单查询。 我已经编写了sql查询并对其进行了测试。我想知道如何使用它来实现这一点 hibernate,我可以用hibernate执行普通的sql语句吗?如果是这样,我需要一个单独的hbm.xml? 如果我使用hibernate并执行普通的sql查询,我还可以在以后使用缓存吗?
答案 0 :(得分:2)
是的,您可以使用Hibernate execute plain SQL queries。
不,您不需要单独的hbm.xml映射文件(除非您 WANT 将sql查询与其他查询分开,在这种情况下您可以这样做)。您可以map your named SQL query使用与命名HQL查询相同的方式。
您是否能够“利用缓存”取决于您通过“缓存”理解的内容以及您将如何映射SQL查询;如果不了解更多细节,就无法回答。
所有这一切,你可能不需要求助于SQL查询; HQL非常强大,很可能(假设存在适当的映射)将查询编写为HQL。你可以发布相关的映射/模式和你的SQL查询吗?
答案 1 :(得分:0)
我强烈建议对HQL查询进行条件查询。它们更接近程序代码而不牺牲任何表达能力。然而,它们依赖于要明确映射的关系,否则它们会变得非常复杂。
为了加速开发,设置属性hibernate.show_sql = true,并使用IDE + jvm的“reload modified class”和“drop stack frame”功能在调试器中使用系统,直到SQL发出看起来像你发布的那个。