2010-11-12 43 views
5

我正在教我自己的hibernate,并且很困惑我为什么不能写简单的SQL查询。HQL与SQL/Hibernate的比较netbeans HQL编辑器

我发现它,而更多的混乱比普通SQL中使用(我所用)

PLUS:使用NetBeans HQL编辑器,我发现烦了,这是很难让我产生HQL的权利查询,那么在SQL中,为什么显示的SQL与实际的SQL语句不同?

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

我非常有兴趣了解为什么我应该使用Hibernate而不是普通的SQL(mysql)语句!

也许一个很好的链接,Hibernate查询将是很好),我用这一个大气压:

但也有兴趣在任何好的链接解释的设置查询,映射,基础结构等。

此致 亚历

回答

3

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

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

这样你可以在一个简单的方式修改orderNumber,evoiding经典

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

Morover使用MySQL的语法,有时会变成你的代码不能重用,如果你的数据库迁移到另一个DBMS。 无论如何,我还是不太相信HQL的偏好。

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

+0

谢谢你。 - 只是另一个问题,所以每个.hbm.xml文件都有一个相应的java文件,只需要有相同的名称! - 如果我想编写一个涉及多达三个表的查询,是否必须在每个查询中编写该链接,或者是否可以编写一个java函数或类似的语句来为每个查询执行该查询,例如helper.java文件!? – 2010-12-03 07:44:11

+0

也许有人能够告诉我更多关于文件的设置,因为我想了解一个非常全面的现有Web应用程序(循环)。现在他们包含了很多java文件来处理数据库访问,我发现很难遵循流程。你会如何使用exampleDao.java文件?? – 2010-12-03 07:47:44

+0

- “每个.hbm.xml文件都有一个相应的java文件,只需要具有相同的名称” - >是;也许它没有必要使用相同的名称(我不确定),但强烈建议。在hibernate.cfg.xml中,您必须放置映射条目,如 bluish 2010-12-03 09:19:35