任務(wù):數(shù)據(jù)庫中有六千余條目錄(id,pid,name)數(shù)據(jù)組成一棵目錄樹,需要通過WebService服務(wù)提供給客戶端顯示出來(Swing中的JTree)。
實(shí)現(xiàn)功能的第一步:在客戶端的樹顯示時(shí)通過網(wǎng)絡(luò)得到頂層目錄,再根據(jù)用戶的點(diǎn)擊逐級展開下級目錄。此方案優(yōu)點(diǎn):實(shí)現(xiàn)簡單;缺點(diǎn):點(diǎn)擊多次容易使人厭煩,速度不行。
客戶端實(shí)現(xiàn)改善的第二步:啟動(dòng)一個(gè)線程從服務(wù)器加載數(shù)據(jù)逐漸生成一個(gè)節(jié)點(diǎn)樹,再交給界面上的JTree命其更新。此舉對操作友好型有改進(jìn),速度上也有所提高。
客戶端實(shí)現(xiàn)改善的第三步:先起線程從服務(wù)器端一次性下載完全部數(shù)據(jù),而后置入內(nèi)存,再以此為基礎(chǔ)構(gòu)建樹。此舉對速度也有明顯提高。
客戶端實(shí)現(xiàn)改善的第四步:將已經(jīng)加載的節(jié)點(diǎn)從內(nèi)存中刪除,使查找時(shí)間逐漸減小。此舉對速度有一定提高。
服務(wù)器端實(shí)現(xiàn)改善的第四步:不使用Hibernate的對象映射而單獨(dú)遴選字段組建成一個(gè)包裝類,此舉對速度有一定提高。
服務(wù)器端實(shí)現(xiàn)改善的第五步:直接采用優(yōu)化的存儲過程將表中必要行集的數(shù)據(jù)在數(shù)據(jù)庫段形成大文本,一次性傳出,WS服務(wù)器端只負(fù)責(zé)傳輸,此舉對速度有明顯提高。
通過以上措施,完成包括六千個(gè)節(jié)點(diǎn)的樹顯示速度數(shù)量級的提高,綜合評價(jià)一下,以上逐步中,第三步:在客戶端另起線程從內(nèi)存加載數(shù)據(jù)形成一棵完整的節(jié)點(diǎn)樹再通知界面更新 和 第五步:通過存儲過程直接取得行集合并結(jié)果對提高速度幫助最大。