Java Web开发构想(5) -- 7.O/R; 8.总结

原创 2005年05月31日 08:37:00

7O/R

Hibernate, EJB Entity Bean产品,JDO产品,iBatis是比较流行的几种O/R Mapping Framework

我做的一些工作中,经常涉及到复杂的优化过的native SQL,并且涉及到大量的批量复杂逻辑处理,现有的O/R框架都不能满足功能和性能要求。

 

我做出这样一个lightor框架,思路借鉴了Martin Fowler的《企业架构模式》里面讲述的一些O/RRow 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能够支持这种用法。这里面,lightormapperpopulate方法需要ResultSet参数。一般的O/R不屑于这么做的,别说ResultSet,连Connection都想包装起来不给你看。

 

Lightor的设计思路也是同时应对简单和复杂。LightorMapper实体部分是自动生成代码。类似于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层主要追求 运行速度快。

页面资源层和页面模板层主要追求 结构清晰优雅。

Java Web开发构想

1.背景、形势  能够进行Web开发的编程语言和技术很多  (1) 动态解释语言  PHP; Perl; Python (Zope, Plone); Ruby (Ruby on Rails); ...
  • fgh2009
  • fgh2009
  • 2012年03月31日 13:56
  • 842

Java Web开发构想

1.背景、形势  能够进行Web开发的编程语言和技术很多  (1) 动态解释语言  PHP; Perl; Python (Zope, Plone); Ruby (Ruby on Rails);  (2...

Java Web开发7___通过数据库连接池连接MySQL 数据库

本博文 给出一个使用数据库连接池的例子, 将使用webdb 数据源 获取一个MySQL 数据库连接,并查询其中的t_dirctionary表, 最后将查询结果显示在客户端浏览器。 以下ViewDic...
  • aduovip
  • aduovip
  • 2017年05月01日 23:50
  • 783

Windows 7环境下配置Java Web开发环境

1. 下载和安装jdk1.8.0_73 JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363....

猫哥带你去战斗——Java Web开发——网页篇[5]——样式

网页不仅要显示内容,还要美观,比如设置网页的背景色、字体的颜色、字体的大小。如果要给不同部分设置不同的样式,需要两个标签和。 这两个标签没有具体的含义,只是用来区分区域的,比如现在我想设计一个网页,...

Win7 X64配置Java Web开发环境

一、安装JDK         1、这里我用的是jdk-7windows-x64,安装位置为默认C:\Program Files\Java\jdk1.7.0_79         2、安装完成后配...

猫哥带你去战斗——Java Web开发——Java篇[8]——连接MySQL

回顾一下之前,我们已安装了MySQL5.5,同时设定了密码Pass1234。所以打开【开始】-【程序】-【MySQL】-【MySQL5.5 Command Line Client】,也就是MySQL命...

Java Web开发的轻便架构Tapestry5---页面渲染一

因为tapestry5是一个基于MVC和Freemarker的web框架,web框架少不了页面渲染,今天就介绍一下tapestry5的页面渲染是如何做的.  1. 基本概念      首先,我们回顾...

猫哥带你去战斗—Java Web开发—Servlet篇[5]—犀利的内置对象

前面几篇写的内容挺多挺乱,稍微理顺下: 1,网站无非是前后台交互 2,目前我们的后台可以认为是Servlet 3,前台可以认为是JSP和HTML 4,Servlet因为可以写out.print...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Web开发构想(5) -- 7.O/R; 8.总结
举报原因:
原因补充:

(最多只允许输入30个字)