首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

表現層控制的 OO 困境與融合之道:從 Hibernate 到 Web Client

     編輯:Java 相關知識

核心矛盾:三層架構的不統一

Hibernate 副標題「符合 Java 慣例的 O/R 持久化」一語道破天機:傳統三層架構中,資料庫端是基於行集的 E/R 模型,而 Java 端是純粹的物件導向(OO)。這種 OO vs E-R 的根本不統一,導致在 Web 介面上難以實現 C/S 模式下直觀的「Master-Detail」「Lookup」等關聯交互。

持久層的融合:Hibernate 的突破

EJB 早期嘗試封裝 Entity Bean,但笨重難用。Hibernate 以 POJO 持久化為核心,將繼承樹與表結構對應做到極致:Hibernate 2 支援單表對應整棵繼承樹、或每類一表;Hibernate 3 引入 <join> 標記,靈活實現基類共表或子類分表。映射檔中的 one-to-many、many-to-one 直接對應業務上的 Master-Detail、Lookup 關係,完成了資料端的語義統一。

表現層的斷層:Struts/WebWork 的局限

伺服器端已習慣用 POJO 建模(訂單、客戶、產品),但 Web Client 端(HTML/JavaScript)僅處理頁面提交/回饋流程。Struts/WebWork 等 MVC 框架無法幫助分析客戶端業務邏輯,例如「新建訂單時,選擇客戶後判斷預收款是否足夠」,程式設計師腦中仍是 input tag、model、action 處理、再渲染下一頁——表現層代碼與伺服器端語義嚴重脫節。

客戶端業務邏輯前移的七大挑戰

為解決多次頁面刷新,嘗試將業務邏輯下沉客戶端(JavaScript+XMLHttp/Web Service、Applet、Office 平台),卻面臨:

  1. 缺乏 POJO 等基礎設施:JS 無介面機制,難定義 Master-Detail 關聯,難復用 hbm.xml 映射。
  2. 界面元素綁定困難:Excel 雖擅長大量資料,但動態查詢弱於 XMLHTTP。
  3. 與伺服器交互效率低:XMLHttp/Web Service 易成效能瓶頸;需拋棄 Struts 重寫分派機制。
  4. 單元測試薄弱:JS 缺成熟 Stub/Mock;Excel 几乎不可測試。
  5. 調試工具落後:JS 缺 log4j 級別日誌、斷點追蹤;Excel 有 VBA 環境但受限。
  6. 運行效率低:JS/VBA 為解釋語言,僅適合細粒度界面控制。
  7. 瀏覽器分裂導致跨平台難:IE 的 behavior/expression 等 AOP 操作在 Mozilla 失效。

展望:JSF、.NET 與 MDA 的新戰場

JSF 有望成為備選方案,但需更豐富的表現層控件。未來突破點在二:一是設計層面的 MDA(模型驅動架構);二是具體實現層面,能否將 Model 定義直接帶入表現層,JSF 與 .NET 將展開新一輪競爭。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved