国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
JAVA技巧:Java中的大量數(shù)據(jù)查詢
JAVA技巧:Java中的大量數(shù)據(jù)查詢
來(lái)源:考試大     2010年02月01日 09:33
   解決方案一:直接使用ResultSet來(lái)處理

  從ResultSet中將查詢結(jié)果讀入collection,緩存在HttpSession或有狀態(tài)bean中,翻頁(yè)的時(shí)候從緩存中取出一頁(yè)數(shù)據(jù)顯示。這種方法有兩個(gè)主要的缺點(diǎn):一是用戶可能看到的是過(guò)期數(shù)據(jù);二是如果數(shù)據(jù)量非常大時(shí)第一次查詢遍歷結(jié)果集會(huì)耗費(fèi)很長(zhǎng)時(shí)間,并且緩存的數(shù)據(jù)也會(huì)占用大量?jī)?nèi)存,效率明顯下降。

  對(duì)上述方法的一種改進(jìn)是當(dāng)用戶第一請(qǐng)求數(shù)據(jù)查詢時(shí),就執(zhí)行SQL語(yǔ)句查詢,獲得的ResultSet對(duì)象及其要使用的連接對(duì)象都保存到其對(duì)應(yīng)的會(huì)話對(duì)象中。以后的分頁(yè)查詢都通過(guò)第一次執(zhí)行SQL獲得的ResultSet對(duì)象定位取得指定頁(yè)的記錄(使用rs.last();rs.getRow() 獲得總計(jì)錄條數(shù),使用rs.absolute()定位到本頁(yè)起始記錄)。最后在用戶不再進(jìn)行分頁(yè)查詢時(shí)或會(huì)話關(guān)閉時(shí),釋放數(shù)據(jù)庫(kù)連接和ResultSet 對(duì)象等數(shù)據(jù)庫(kù)訪問(wèn)資源。每次翻頁(yè)都只從ResultSet中取出一頁(yè)數(shù)據(jù)。這種方式在某些數(shù)據(jù)庫(kù)(如oracle)的JDBC實(shí)現(xiàn)中差不多也是回緩存所有記錄而占用大量?jī)?nèi)存,同時(shí)速度也非常慢。

  在用例分頁(yè)查詢的整個(gè)會(huì)話期間,一個(gè)用戶的分頁(yè)查詢就要占用一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象和結(jié)果集的游標(biāo),這種方式對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)資源占用比較大,并且其利用率不是很高。

  優(yōu)點(diǎn):減少了數(shù)據(jù)庫(kù)連接對(duì)象的多次分配獲取,減少了對(duì)數(shù)據(jù)庫(kù)的SQL查詢執(zhí)行。

  缺點(diǎn):占用數(shù)據(jù)庫(kù)訪問(wèn)資源-數(shù)據(jù)庫(kù)連接對(duì)象,并占用了數(shù)據(jù)庫(kù)上的資源-游標(biāo);會(huì)消耗大量?jī)?nèi)存;

  解決方案二:定位行集SQL查詢

  使用數(shù)據(jù)庫(kù)產(chǎn)品提供的對(duì)查詢的結(jié)果集可定位行范圍的SQL接口技術(shù)。在用戶的分頁(yè)面查詢請(qǐng)求中,每次可取得查詢請(qǐng)求的行范圍的參數(shù),然后使用這些參數(shù)生產(chǎn)取得指定行范圍的的SQL查詢語(yǔ)句,然后每次請(qǐng)求獲得一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象并執(zhí)行SQL查詢,把查詢的結(jié)果返回給用戶,最后釋放說(shuō)有的數(shù)據(jù)庫(kù)訪問(wèn)資源。

  這種方式需要每次請(qǐng)求時(shí)都要執(zhí)行數(shù)據(jù)庫(kù)的SQL查詢語(yǔ)句;對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)資源是使用完就立即釋放,不白白占用數(shù)據(jù)庫(kù)訪問(wèn)資源。對(duì)特定(提供了對(duì)查詢結(jié)果集可定位功能的)的數(shù)據(jù)庫(kù)產(chǎn)品,如:Oracle(rowid或rownum ),DB2(rowid或rownum ()), PostgreSQL(LIMIT 和 OFFSET),mySQL(Limit)等。(MS SQL Server 沒(méi)有提供此技術(shù)。)

  下面是在oracle下的查詢語(yǔ)句示例:

  SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM (...... ) row_ WHERE rownum <= {pageNumber*rowsPerPage}) WHERE rownum_ > {(pageNumber-1)*rowsPerPage}

  優(yōu)點(diǎn):對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)資源(數(shù)據(jù)庫(kù)連接對(duì)象,數(shù)據(jù)庫(kù)游標(biāo)等)沒(méi)有浪費(fèi),這些資源的充分重復(fù)的利用。

  缺點(diǎn):對(duì)每次分頁(yè)面查詢請(qǐng)求要頻繁的從Web容器中獲得數(shù)據(jù)庫(kù)訪問(wèn)資源(數(shù)據(jù)庫(kù)連接對(duì)象和數(shù)據(jù)庫(kù)游標(biāo))并建立連接;要依賴于具體的數(shù)據(jù)庫(kù)產(chǎn)品的支持
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JDBC常見(jiàn)面試題集錦
中國(guó)DotNet俱樂(lè)部——首頁(yè)
JSP分頁(yè)技術(shù)實(shí)現(xiàn)
Java調(diào)用存儲(chǔ)過(guò)程
JDBC技術(shù)和數(shù)據(jù)庫(kù)連接池專題
JDBC接口規(guī)范
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服