7.O/R
Hibernate, EJB Entity Bean产品,JDO产品,iBatis是比较流行的几种O/R Mapping Framework。
我做的一些工作中,经常涉及到复杂的优化过的native SQL,并且涉及到大量的批量复杂逻辑处理,现有的O/R框架都不能满足功能和性能要求。
我做出这样一个lightor框架,思路借鉴了Martin Fowler的《企业架构模式》里面讲述的一些O/R的Row Mapper, Column Mapper等概念。
最经典的用法是:
ResultSet rs = ps.executeQuery( a long complex native sql);
//will return a lot of records
A a = new A();
B b = new B();
IMapper aMapper = MapperService.getMapper(A.class);
IMapper bMapper = MapperService.getMapper(B.class);
While(rs.next()){
aMapper.populate(a, rs);
bMapper.populate(b, rs);
businessLogic(a, b);
}
可以看到,Lightor不需要一下子把所有纪录都放到一个Object List里面。完全可以随取随用。整个过程中,a, b只有一份,极大的节省了空间、时间,也极大的提高了开发效率,减少了重复代码。
没有任何一个其它O/R能够支持这种用法。这里面,lightor的mapper的populate方法需要ResultSet参数。一般的O/R不屑于这么做的,别说ResultSet,连Connection都想包装起来不给你看。
Lightor的设计思路也是同时应对简单和复杂。Lightor的Mapper实体部分是自动生成代码。类似于JDO的静态Enhance。不同的是,JDO静态Enhance直接修改bean class。而Lightor则不动原有的bean,只是多生成了对应的Mapper Source/Class。这种方式是最利于跟踪调试的。至于发布部署,和JDO的情况差不多,不如Hibernate的动态代码增强。
这里我很羡慕Python, Ruby等动态解释语言的特性,根本不需要这些麻烦事。
这一层我主要关注的是性能,缓存策略等等,而不是简便。我觉得,一个应用系统的瓶颈主要存在于O/R, DB层。不应该单纯为了追求OO结构的优雅,或者编程的方便,而牺牲了一些可能优化的地方。
关于Lightor的缓存策略, 我的Blog上有几篇文章。
http://blog.csdn.net/buaawhl
数据库对象的缓存策略
http://blog.csdn.net/buaawhl/archive/2004/12/21/224184.aspx
分页 & QueryKey & 定长预取
http://blog.csdn.net/buaawhl/archive/2005/01/08/245005.aspx
8.总结
我理想中的Web开发架构是这样的:
开发速度快,运行速度快,结构清晰优雅。
具体到每一层。
Web框架层主要追求 开发速度快。
O/R层主要追求 运行速度快。
页面资源层和页面模板层主要追求 结构清晰优雅。
分享到:
相关推荐
集团公司信息系统运维方案构想---精品管理资料.docx集团公司信息系统运维方案构想---精品管理资料.docx集团公司信息系统运维方案构想---精品管理资料.docx集团公司信息系统运维方案构想---精品管理资料.docx集团公司...
集团公司信息系统运维方案构想---精品管理资料.pdf集团公司信息系统运维方案构想---精品管理资料.pdf集团公司信息系统运维方案构想---精品管理资料.pdf集团公司信息系统运维方案构想---精品管理资料.pdf集团公司信息...
高中化学课程改革的构想-(一).docx
polkadot-white-paper, 面向Polkadot的异构可以扩展多链技术的技术构想 Polkadot纸张这是Polkadot网络协议的初始技术构想论文,异构可以扩展多链。Polkadot允许blockchains新设计通信和池安全,同时还允许它们具有...
集团公司信息系统运维方案构想---精品管理资料 (2).docx集团公司信息系统运维方案构想---精品管理资料 (2).docx集团公司信息系统运维方案构想---精品管理资料 (2).docx集团公司信息系统运维方案构想---精品管理资料 ...
对中国平煤神马集团社会保险信息化建设的构想-最新年文档.doc
实现该 http://www.tradejuice.com/forex/forex-1-2-3-methode-mm.htm网页中描述的方法。作者并没有按照创建者的构想实行,所以不能够保证实行的正确性。
成都汇城星级酒店招商运营构想--cengmozhe.pptx
它涵盖了从系统构想到实现的全过程所需的各类材料,包括论文、设计文档、源代码等,旨在为开发者提供一套完整、高效的参考和指导。 包含内容: 论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计...
随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域, 包括医药,汽车工业,手机行业,游戏,等等地方。Java游戏的开发为满足人们娱乐所需而设计。 本游戏为打砖块游戏,是基于Java的图形用户界面而...
它涵盖了从系统构想到实现的全过程所需的各类材料,包括论文、设计文档、源代码等,旨在为开发者提供一套完整、高效的参考和指导。 包含内容: 论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计...
基于网络环境实施文化素质教育的构想-2019年教育文档.pdf
合肥现代物流园区-可行性研究报告4-总体发展构想-精品创业书模板.rar
合肥现代物流园区-可行性研究报告4-总体发展构想-精品创业书模板.doc
它涵盖了从系统构想到实现的全过程所需的各类材料,包括论文、设计文档、源代码等,旨在为开发者提供一套完整、高效的参考和指导。 包含内容: 论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计...
--讶州研究局-以中国为中心的新兴秩序:实践中的中国对世界新秩序构想(英文)-2020.8-140页精品报告2020.pdf
区块链的安全基-架构及构想-2020.6-34页精品报告2020.pdf
黑暗诱饵安装安装依赖sudo apt install libzmq3-dev redis-servergo get -d -u -t github.com/refraction-networking/gotapdance/...go get -d github.com/go-redis/redis安装PF_RING建立车站make# future# sudo ...
它涵盖了从系统构想到实现的全过程所需的各类材料,包括论文、设计文档、源代码等,旨在为开发者提供一套完整、高效的参考和指导。 包含内容: 论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计...
它涵盖了从系统构想到实现的全过程所需的各类材料,包括论文、设计文档、源代码等,旨在为开发者提供一套完整、高效的参考和指导。 包含内容: 论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计...