WEB項目的分層結構
大部分的WEB應用在職責上至少被分成四層:表示層、持久層、業務層和域模塊層。
一、 表示層
一般來講,一個典型的WEB應用的前端應該是表示層,可以使用Struts框架。
下面是Struts所負責的:
1、 管理用戶的請求,做出相應的響應。
2、 提供一個流程控制,委派調用業務邏輯和其他上層處理。
3、 處理異常。
4、 為顯示提供一個數據模型(即把數據對象設置到某一個范圍內,用於前台獲取數據)。
5、 用戶界面的驗證。
以下內容,不該在Struts表示層的編碼中經常出現,它們與表示層無關的。
1、 與數據庫直接通信。
2、 與應用程序相關聯的業務邏輯有校驗
3、 事務處理。
二、 持久層
典型的WEB應用的后端是持久層。可以用Hibernate實現。Hibernate的持久對象是基於POJO(Plain Old Java Object)和Java集合的。
下面是Hibernate所負責的內容:
1、 如何查詢對象的相關信息。
Hibernate是通過一個面向對象查詢語言(HQL)或正則表達的API來完成查詢的。HQL非常類似於SQL,只是把SQL里的table和columns用Object和它的fields代替。
2、 如何存儲、更新、刪除數據庫記錄。
3、 Hibernate這類高級ORM框架支持大部分主流數據庫,並且支持父表/子表關系、事務處理、繼承和多態。
三、 業務層
一個典型WEB應用的中間部分是業務層或服務層。可以用Spring來實現。
下面是業務層所負責的:
1、 處理應用程序的業務邏輯和業務校驗。
2、 管理事務。
3、 提供與其他層相互作用的接口。
4、 管理業務層級別的對象的依賴。
5、 在表示層和持久層之間增加一個靈活的機制,使得他們不直接聯系在一起。
6、 通過揭示從表示層到業務層之間的上下文來得到業務邏輯。
7、 管理程序的執行(從業務層到持久層)。
四、 域模塊層
既然我們致力於一個WEB的應用,我們就需要一個對象集合,讓它在不同層之間移動。域模塊層由實際需求中業務對象組成,比如訂單明細、產品、等。開發者在這層不用管哪些數據傳輸對象,而關注域對象即可。例如,Hibernate允許你將數據庫中的信息存入域對象,這樣你可以在連接斷開的情況下把這些數據顯示到用戶界面層,而那些對象也可以返回給持久層,從而在數據庫里更新。而且,你不必把對象轉化成DTO(這可能導致它在不同層之間傳輸過程中丟失)。這個模型使得Java開發者能很自然運用面向編程,而不需要附加編碼。