langping86

stay hungry,stay foolish.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
由于项目上对单据的性能格外要求,所以特别看了看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)数据保存慢的原因,继续研究
 
《待续》
posted on 2013-01-09 23:30  masb  阅读(4408)  评论(0编辑  收藏  举报