我正在教我的自我休眠,并且很困惑为什么我不能只编写简单的SQL查询。
我发现使用它比使用普通SQL(我习惯使用的)
更令人困惑PLUS:我发现NetBeans HQL编辑器非常烦人,我很难在HQL中生成正确的查询,然后在SQL中,为什么显示的SQL与实际的SQL语句不同?
为什么要使用它? - 众所周知,hibernate资源非常广泛,我相信hibernate是我们的应用程序经常耗尽内存的原因,就像在重新部署过程中一样......
我很想知道为什么我应该使用Hibernate而不是简单的SQL(mysql)语句!?
也许hibernate查询的好链接会很好;),我正在使用这个atm:
但也对任何解释查询设置,映射,底层构造等的好链接感兴趣。
最诚挚的问候 亚历
答案 0 :(得分:3)
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你可以找到完整的语法定义。