Potala(1)——Introduction

本文分享了一个名为Potala的J2EE Web应用开发经验,采用Struts2、Spring和JPA(由Hibernate提供)作为开发平台,探讨了基于Domain Model的开发模式,以及表现层、中间层和领域模型层的设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近开始倒腾一个J2EE web应用。给它定了个很有意思的代码名字——Potala。系统采用了基于Struts2+Spring+JPA(由Hibernate提供)的开发平台。由于是第一次真正意义上的负责一个J2EE项目,所以准备将项目中的一些学习心得和主要关注点记录下来,可能对将来的学习也可以提供一定指导吧:)

 

基本框架:  

  最开始的想法是使用相对比较熟悉的Presentation+Facade+Service+DAO+Mdoel的模型。本来想对Hibernate进行下深入了解的,所以拜读了Gavin King的Java Persistence with Hibernate。读这本书的过程中,发现作者似乎更倾向于基于Domain Model的开发,而且原来的这套分层封装方法似乎也没有想象中的那么完美。又大概翻了下Martin Fowler大牛的Patterns of Enterprise Application Architecture,觉得似乎有必要尝试下基于Domain Model的开发。反正搞这个项目本来本来也是本着学习的精神来的,而且其他几个组员也基本都是从零开始,咱就试试吧:) 后来又发现一本很棒的书:Chris Richardson的Pojos in Action。仔细翻阅了下,大概确定了系统的基本框架。

  表现层:这层主要用Struts2的MVC来弄了,JS采用基于DOJO的开发吧,主要都丢给我们可爱的King同学去负责了。

  中间层:最开始的想法是用一个标准的Facade,但Java Persistence with Hibernate第16章介绍了一种很独特的方式——Command Pattern。虽然这种方式也有很多不完美的地方,但用它要做到对横切面的关注(比如授权)非常方便,而且多个Command之间组合起来也比较容易。就用它吧:)

  领域模型层: 套用Pojos in Action里的方案,主要由Entity、Value Object、Repository和Service构成。其中Entity和Value Object中集成一些通用的业务逻辑,Repository负责持久化工作,Service主要关注一些无法分发给单独的Entity或Value Object的逻辑。 在Domain Model,特别是Entity中集成业务逻辑的确有别于以前的编程模型,似乎关于这方面的争论在JavaEye等社区上也不少。但一个比较普遍的观点是:相对于哑对象(Dummy Object,在JavaEye上也经常有人称为贫血模型),这种方式比较好的体现了OO准则。咱也不去瞎搅和这些争论,同时也不求整个架构多完美,只要好用就行了:)

 

主要关注点:

      以下这些关注点是系统设计中的一些比较主要的问题。在接下来的一些学习笔记中,我将对这些问题进行详细描述。

  领域模型对类、属性、关系的识别和如何给领域模型添加行为;

  数据库事务的隔离级别和系统的并发控制;

  业务逻辑的封装,另外还包括每个操作一个会话问题的避免;

  单元测试和基于Struts2+Spring+JPA的集成测试;

  性能调优,主要包括缓存和抓取策略。

  

转载于:https://www.cnblogs.com/marco/archive/2008/12/09/1350976.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值