【J2EE】:Java EE應用的元件

連江偉發表於2016-03-10

上篇部落格中,我們在文章的結尾提到了元件,這篇部落格就接著討論一下JavaEE應用的元件有哪些,以及這些元件主要用了什麼技術。


首先,我們得先了解一下這裡所說的元件是什麼鬼?


百度百科給出的解釋是:元件(Component)是對資料和方法的簡單封裝。元件可以有自己的屬性和方法。屬性是元件資料的簡單訪問者。方法則是元件的一些簡單而可見的功能。使用元件可以實現拖放式程式設計、快速的屬性處理以及真正的物件導向的設計。


從上面的描述來看,實際上就是物件導向的思想,或者就是在描述一個類,因為物件或者類就是由屬性和方法構成的。而我們的JavaEE應用程式就是由元件構成的,JavaEE元件是具有獨立功能的單元,它們通過相關的類和檔案進行組裝,成為應用程式,並且與其他元件互動。例如:控制器元件、EAO元件,表現層元件等等。下面我們就根據JavaEE的分層模型來說說各層元件的詳細情況。


表現層元件:


主要負責收集使用者輸入資料,或者向客戶顯示系統狀態。最常用的表現層技術是JSP,但JSP並不是唯一的表現層技術。表現層還可以由Velocity、FreeMaker和Tapestry等技術完成,或者使用普通的應用程式充當表現層元件,甚至可以是小型智慧裝置,比如我們手機、IPad等等。


控制器元件:


對於JavaEE的MVC框架而言,框架提供了一個前端核心控制器,而核心控制器負責攔截使用者請求,並將請求轉發給使用者實現的控制器元件。而這些使用者實現的控制器則負責處理呼叫業務邏輯方法,處理使用者請求。


業務邏輯元件:


這些元件是系統的核心元件,實現系統的業務邏輯。通常,一個業務邏輯方法對應一次使用者操作。一個業務邏輯方法應該是一個整體的,因此我們要求對業務邏輯方法增加事務性。業務邏輯方法僅僅負責實現業務邏輯,不應該進行資料庫訪問。因此,業務邏輯元件中不應該出現原始的Hibernate。JDBC等API。


為什麼要將業務邏輯實現與持久層的技術分離呢?一個很重要的原因是:當系統需要在不同的持久層技術之間切換時,系統的業務邏輯元件無須做任何改變。


DAO元件:


Data Access Object,也被稱為資料訪問物件。這個型別的物件比較缺乏變化,每個DAO元件都提供Domain Object物件基本的建立、查詢、更新和刪除等操作,這些操作對應於資料表的CRUD等原子操作。當然,如果採用不同的持久層訪問技術,DAO元件的實現會完全不同。為了業務邏輯元件的實現與DAO元件的實現分離,我們為每個DAO元件都提供介面,業務邏輯元件面向DAO介面程式設計,從而提供更好的解耦。


領域物件元件


領域物件(Domain Object)抽象了系統的物件模型。通常而言,這些領域物件的狀態都必須儲存在資料庫裡面。因此,每個領域物件通常對應一個或多個資料表,領域物件通常需要提供對資料記錄的訪問方式。


小結一下;


最後放上一張圖,幫助大家更好理解JavaEE應用架構和各種技術之間的關係。
 

其實很多人都會有這樣的疑問:我可以使用JSP完成整個系統,為何還有這麼費勁的將系統分這麼層?每層使用不同的技術框架?有必要麼?


我想說的是,對於個人學習、娛樂性的個人站點而言,你怎麼做都無所謂,但是對於大型的資訊化系統來說,你就要好好考慮考慮了,維護性、擴充套件性、複用性等等都是問題,好好體會一下吧。

相關文章