天天看點

bboss 持久層重大改進

bboss 持久層重大改進。

bboss持久層最大特色就是其對動态sql語句的良好支援,這個機制是基于velocity模闆引擎的來實作的:

Velocity.evaluate(context, out, sqlName, sql);      

Velocity.evaluate這個方法存在一個非常嚴重的性能隐患,那就是這個方法沒有對解析出來的sql模闆文法結構樹做任何的緩存機制,每次都會硬解析sql語句,并且在解析sql語句時會向velocity的模闆解析器池中擷取一個池化的解析器,這樣在高并發情況下會頻繁地擷取解析其池的共享鎖,導緻系統性能下降。為了避免出現該問題,最近對bboss持久層和velocity模闆引擎都做了功能擴充,徹底解決了這個問題,非常完美第實作了對模闆sql文法結構樹的緩存功能,每條sql語句隻硬解析一次,如果sql語句是通過xml配置檔案來管理則按照每個檔案對應一個緩存器,提高緩存的檢索速度和命中率,其他非配置檔案的sql語句也通過系統全局預設的緩存容器進行管理。

同時對生成sql算法進行優化,對velocity分析出的詞法進行變量和句法識别,如果sql語句不包含任何velocity變量和句法,則将sql語句當作普通字元串處理,持久層後續不再針對該sql語句做任何和velocity的相關的操作(也就是說将sql語句當成普通的sql語句處理),這樣也可以大幅提升系統性能。

在bboss中新增了bboss-velocity工程,這個工程就是bboss對velocity模闆引擎的改造版本(基于velocity 1.7改造),改造後的velocity在包路徑前面統一添加了“bboss.”字首,避免與原始的velocity包的沖突。

上述改造是針對最新的

bboss3.6.2

分支版本實施,已經經過初步回歸測試并更新到相關的實際項目中,目前未出現任何更新版本導緻的問題,完全相容先前的應用程式。而且經實踐驗證bboss持久層的性能同時得到大幅提升,達到了改造的最終目标。

更新bboss3.6.2需要更新以下jar檔案:

bboss-aop.jar

bboss-velocity.jar(新增)

bboss-mvc.jar

frameworkset-pool.jar

frameworkset-util.jar

bboss建構方法:

http://yin-bp.iteye.com/blog/1462842

bboss3.6.2源碼下載下傳位址: