您的位置:jsp学习站首页 >> 框架/开源 >> Spring >> Tapestry+Spring+Hibernate整合工作小结

Tapestry+Spring+Hibernate整合工作小结 (1)

[ 来源:互网络 | 更新日期:2007-09-29 18:52:55 | 浏览次数:4201]
简介: 1、架构的选择 首先,我们都同意以我们现有的能力,没有足够的时间和资源自行开发一套完整的平台。在已有的众多开源项目中选择若干优秀的项目进行整合,才可能按时完成项目,达到项目目的。 但是在平台项目开始前,我们对平台的技术架构有各自的构想。FrankSoo原来的构想是Struts+Spring+Hibernate,而我的构想是Tapestry+Hibernate。 不过FrankSoo非常open,在我向他演示了Tapestry的经典范例workbench,介绍了Tapestry基于组件的编程方式之后,他同意选用Tapestry作为实现Web展现层的框架。我想FrankSoo以前的Struts开发经验(painful)也是他做出这个决定的因素之一。 FrankSoo gave me a nice introduction of Spring Framework

Cyberwing 


FrankSoo是我的项目经理。前段时间公司决定作个新的J2EE二次开发平台,以替换公司原有的开发平台。公司让FrankSoo和我组成平台开发项目组,FrankSoo担任项目经理。现在这个平台整合开发阶段已经结束,进入项目应用阶段。下面是我们的整合工作小结,介绍一下我们在工作中遇到的问题,以及我们选择的解决方案. 


1、架构的选择 

首先,我们都同意以我们现有的能力,没有足够的时间和资源自行开发一套完整的平台。在已有的众多开源项目中选择若干优秀的项目进行整合,才可能按时完成项目,达到项目目的。 

但是在平台项目开始前,我们对平台的技术架构有各自的构想。FrankSoo原来的构想是Struts+Spring+Hibernate,而我的构想是Tapestry+Hibernate。 

不过FrankSoo非常open,在我向他演示了Tapestry的经典范例workbench,介绍了Tapestry基于组件的编程方式之后,他同意选用Tapestry作为实现Web展现层的框架。我想FrankSoo以前的Struts开发经验(painful)也是他做出这个决定的因素之一。 

FrankSoo gave me a nice introduction of Spring Framework. Wow, what an amazing framework! IOC, Declarative Transaction Support, Hibernate Session Management, Hibernate DAO Support… These features are just what we need for a middle tire container. 

至于Hibernate,这个最成功的开源ORM项目,我们都投了它一票^_^ 

最后我们确定平台的技术架构是Tapestry+Spring+Hibernate. 

2、架构整合 

最初的平台架构借鉴了一篇介绍如何集成Tapestry与Spring的文章[1]中提到的架构: 

图1 
 

Web层的Tapestry负责数据输入输出, 响应用户事件,及输入校验的工作, 通过访问预先加载的WebApplicationContext(由Spring提供, 包含着所有Service bean)获得Service层的Service Bean, 把业务操作都委托给它们. 

Service层的bean则负责use case逻辑, domain相关的逻辑委托给domain model中的bean去实现. Service通过DAO完成对domain model的持久化工作. Service负责数据库事务和Hibernate Session的管理(通过Spring的声明式事务管理和与之集成的Hibernate Session管理). Service层的另一项重要工作是权限和访问控制。 

Domain model负责表示问题域的数据和domain logic. DAO使用Hibernate持久化数据以及查询. 在实现DAO时, 我们使用了Spring的Hibernate DAO Support,极大地简化了代码, 很多方法都只用简单的一行完成. 有意思的是, 最后完成的HibernateDAO的代码量居然比我写的MockDAO的代码少了一半还多 

这样的架构优点很明显, 层次清晰, 各层的职责也明确, 便于分层设计与开发, 结合mock和spring的IOC, unit test也是非常容易的. 而且后台(Service, domain model and DAO)的代码不依赖于Web容器或是EJB容器的API, 移植性非常好, 同样的代码可以在Web app中使用也可在普通的Java app中使用, 只需更换UI层. 

按照这个整合的构架,我们实现一个简单的实例,实现了列表分页查询和显示,数据增删改,
[1] [2] [3]
Tags:关键字:Tapestry+Spring+Hibernate整合工作小结
责任编辑:glen