天天看點

J2EE架構中各層的資料表示方法

J2EE 架構中各層的資料表示方法    Web 層的資料表示是 FormBean ,資料來源于 HTML Form POST   業務層的資料表示是 VO   持久層的資料表示是 PO ,其資料來源于資料庫,持久層的資料表示例如 CMP 。在一個規範的 J2EE 架構中,不同層的資料表示應該被限制在層内,而不應該擴散到其它層,這樣可以降低層間的耦合性,提高 J2EE 架構整體的可維護性和可擴充性。比如說 Web 層的邏輯進行了修改,那麼隻需要修改 FormBean 的結構,而不需要觸動業務層和持久層的代碼修改。同樣滴,當資料庫表進行了小的調整,那麼也隻需要修改持久層資料表示,而不需要觸動業務層代碼和 Web 層代碼。      JSP(View) ---> Action Form Bean (Module) ---> Action(Control)      Action Form Bean 是 Web 層的資料表示,它和 HTML 頁面 Form 對應,隻要 Web 頁面的操作流程發生改變,它就要相應的進行修改,它不應該也不能被傳遞到業務層和持久層,否則一旦頁面修改,會一直牽連到業務層和持久層的大面積的代碼進行修改,對于軟體的可維護性和可擴充性而言,是一個災難, Actiont 就是他的邊界,到此為止!      Action(Web Control) ---> Business Bean ---> DAO ---> ORM --->DB     而 PO 則是業務層和持久層的資料表示,它在業務層和持久層之間進行流動,他不應該也不能被傳遞到 Web 層的 View 中去,而 ActionServlet 就是他的邊界,到此為止!     整個架構的流程:   當使用者通過浏覽器通路網頁,送出了一個頁面。于是 Action 拿到了這個 FormBean ,他會把 FormBean 屬性讀出來,然後構造一個 PO 對象,再調用業務層的 Bean 類,完成了注冊操作,重定向到成功頁面。而業務層 Bean 收到這個 PO 對象之後,調用 DAO 接口方法,進行持久對象的持久化操作。     業務 Bean 取得 Name( 注意 : Name 對象隻是 User 的一個屬性 ) 對象之後調用 DAO 接口,傳回一個 User 的 PO 對象,注意這個 User 不同于在 Web 層使用的 UserFormBean ,他有很多集合屬性滴。然後業務 Bean 把 User 對象傳回給 Action 。     總結:      Form Bean 是 Web 層的資料表示,他不能被傳遞到業務層; PO 是持久層的資料表示,在特定情況下,例如 Hibernate 中,他可以取代 VO 出現在業務層,但是不管 PO 還是 VO 都必須限制在業務層内使用,最多到達 Web 層的 Control ,絕不能被擴散到 View 去。      Form Bean 和 PO 之間的資料轉化是在 Action 中進行滴。

繼續閱讀