新聞中心
Hibernate還是比較常用的,于是我研究了一下Hibernate query語(yǔ)句,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、南溪網(wǎng)站維護(hù)、網(wǎng)站推廣。
今天要在sqlserver環(huán)境下做一個(gè)簡(jiǎn)單的增刪改功能,要用到分頁(yè),開(kāi)始直接用oracle數(shù)據(jù)庫(kù)環(huán)境一直用的一個(gè)jdbc重構(gòu)過(guò)的類(lèi)處理,發(fā)現(xiàn)不行,才想起oracle和sqlserver的分頁(yè)sql語(yǔ)句寫(xiě)法是很不一樣的,于是打算google一下,緊接又想,何不先看看Hibernate在sqlserver環(huán)境是怎么處理分頁(yè)的(我這里用的是Hibernate 3.0)。
先把Hibernate配置文件的show_sql改成true,啟動(dòng)tomcat,在項(xiàng)目原來(lái)的一個(gè)功能里找到一個(gè)翻頁(yè)的地方,比如每頁(yè)顯示兩條,***頁(yè)的時(shí)候,Hibernate query語(yǔ)句是:SELECT TOP 2 * FROM …… 恩,對(duì)的,看來(lái)Hibernate還比較聰明,***頁(yè)直接用top語(yǔ)句,可是點(diǎn)下一頁(yè),當(dāng)查詢的記錄應(yīng)是3-4條時(shí),Hibernate query語(yǔ)句是: SELECT TOP 4 * FROM…… 不理解了,難道Hibernate這么笨嗎,如果我要查的是第100萬(wàn)條到100萬(wàn)零10條的記錄,難道他也是先把這100萬(wàn)零10條全部查出來(lái)嗎?
但是我測(cè)試的結(jié)果就是如果我要去第5000頁(yè)的數(shù)據(jù),他就是select top 10000 * from ……這樣取出來(lái)的。但是如果把sql dialect 改成oracle,處理是用 rownum 直接去取需要的中間那么多條記錄的。明天升級(jí)到***的Hibernate 3.3試試看會(huì)不會(huì)這樣。難道java的開(kāi)源框架對(duì)sql server這么感冒? 呵呵
監(jiān)控了下數(shù)據(jù)庫(kù),發(fā)現(xiàn)公司的php程序在翻頁(yè)時(shí)也是這樣處理的,我就奇怪了,sql server2005中也有rownum概念的啊。看來(lái)代碼從sql server2000到2005以后還是要做一些優(yōu)化的
網(wǎng)站標(biāo)題:講解Hibernatequery語(yǔ)句
地址分享:http://m.5511xx.com/article/dpgdpgh.html


咨詢
建站咨詢
