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開發者能很自然運用面向程式設計,而不需要附加編碼。