2010-11-12 42 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