2011-12-15 94 views
0

你知道什麼關於Hibernate和它能夠用HQL生成動態sql查詢嗎?休眠和動態SQL

我有任何的鏈接,我將不勝感激張貼,我在Hibernate的文檔中找不到它。

問候 加布

//編輯 所以也許我會精確我的意思。我想知道如果一些HQL代碼生成使用像EXECUTE(用於postgres)的SQL查詢

+0

目前仍不清楚你的意思。你爲什麼需要執行語句?你要解決什麼問題? – 2012-01-03 07:44:37

回答

0

不知道你在這裏瞄準什麼? Hibernate中的HQL將始終生成SQL,並且可以根據輸入將HQL集合在一起。它將始終爲每個排列和運行生成新的SQL。您可以進行Hibernate預編譯/緩存查詢,但這只是性能優化,不應該成爲您的首要關注點。

我也會考慮調查Criteria API,它可以讓你保持更多的面向對象而不是使用大量的字符串。

+0

我想hibernate產生一個EXECUTE SQL語句 – 2011-12-15 13:14:59

+0

我不同意標準是「更多面向對象」。 HQL是非常面向對象的,儘管它是在java或xml中存儲在字符串中的另一種語言。標準不那麼強大。建議用於動態查詢(而不是將HQL放在一起的字符串操作)。 – 2011-12-15 13:40:18

0

如果你在談論使用動態參數靜態查詢,語法是

select f from Foo f where f.bar = ? and f.zim = ? 

,或者用命名參數

select f from Foo f where f.bar = :bar and f.zim = :zim 

如果你談論的是基於完全動態創建查詢一組標準,那麼使用的API是Criteria API。

這兩者大部分都在Hibernate參考文檔中。