Potala(1)——Introduction

來源:互聯網
上載者:User

  最近開始倒騰一個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的整合測試;

  效能調優,主要包括緩衝和抓取策略。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.