ORMapping學習


由於項目上對單據的性能格外要求,所以特別看了看ORMapping這一層的實現,主要是為了自己分析問題。
 
ORMapping的學習(一):整體認知
1、ORMapping說明
(1)包的命名:
dao.ormapping
dao.ormapping.impl
dao.ormapping.lazyload--惰性加載處理
 
dao.ormapping_ex--從功能來看,ex意味extend,是對ormapping功能的擴展
        .ast
        .ast.expr
        .parser
        .runtime
        .runtime.dataquery
        .runtime.objectquery
        .runtime.objectquery.impl
        .service
 
(2)主接口定義
IDataAccessObject
 
IORMappingDAO
 
ORMappingDAO           BillORMappingDAO
 
 
2、API設計
public IObjectValue getValue(IObjectPK pk) throws DataAccessException {
getValue(pk,selector);
}
public IObjectValue getValue(IObjectPK pk, SelectorItemCollection selector){}
public IObjectValue getValue(IObjectPK pk, SelectorItemCollection selector,boolean isBaseOnSelector) throws DataAccessException{}
public IObjectValue getValue(IObjectPK pk, SelectorItemCollection selector,SorterItemCollection sorter) throws DataAccessException{} 
public IObjectValue getValue(IObjectPK pk, SelectorItemCollection selector,SorterItemCollection sorter,boolean isBaseOnSelector) throws DataAccessException{}
 
private IObjectValue innerGetValue(EntityViewInfo view, boolean isBaseOnSelector){}
 
 
參考以上方法,對API的設計,可遵循如上的格式:
(1)代碼的高度重用
(2)可維護性高
(3)層次分明
 
 
3、主要接口定義
 
工廠類
ObjectCUDFactory
 
ObjectCreator -- 負責數據的創建
ObjectRemover -- 負責數據的刪除
ObjectUpdater -- 負責數據的更新
 
ORMAppingDAO中主要是調用如上的方法進行數據的操作
 
 
4、常用工具方法
 
com.kingdee.bos.dao.ormapping.ORMappingDAOUtils
com.kingdee.bos.dao.ormapping.Utils
 
 
 
5、事務處理框架
初步來看是使用了springframework的實現
 
 
6、猜想:
(1)數據更新時慢的原因,可能是在更新之前需要查詢一次
(2)數據保存慢的原因,繼續研究
 
《待續》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM