Potala(1)——Introduction

  最近开始倒腾一个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

猜你喜欢

转载自blog.csdn.net/weixin_33907511/article/details/94448857