淺談Hibernate領域對象
Hibernate有很多值得學習的地方,這里我們主要介紹Hibernate領域對象,包括介紹結合一個簡單的例子等方面。
Hibernate領域對象
***,因為我們討論的是一個不是很復雜的、基于web的應用程序,我們需要一組能在不同的層之間移動的對象。領域對象層由那些代表現實世界中的業務對象的對象們組成,比如:一份訂單(Order)、訂單項(OrderLineItem)、產品(Product)等等。這個層讓開發者停止建立和維護不必要的數據傳輸對象(或者叫作DTOs),來匹配他們的領域對象。允許你把數據庫信息讀進Hibernate領域對象(domain objects)的一個對象圖,這樣你可以在連接斷開的情況下把這些數據顯示到UI層。那些對象也能被更新和送回到持久層并在數據庫里更新。而且,你不必把對象轉化成DTOs,因為DTOs在不同的應用層間移動,可能在轉換中丟失。這個模型使得Java開發者自然地以一種面向對象的風格和對象打交道,沒有附加的編碼。
結合一個簡單的例子
既然我們已經從一個高的層次上理解了這些組件, 現在就讓我們開始實踐吧。在這個例子中,我們還是將合并Struts、Spring、Hibernate框架。每一個這些框架在一篇文章中都有太多的細節覆蓋到。這篇文章將用一個簡單的例子代碼展示怎樣把它們結合在一起,而不是進入每個框架的許多細節。示例應用程序將示范一個請求怎樣跨越每一層被服務的。這個示例應用程序的一個用戶能保存一個訂單到數據庫中和查看一個在數據庫中存在的訂單。進一步的增強可以使用戶更新或刪除一個存在的訂單。
你可以下載這個應用的源碼(http://www.onjava.com/onjava/2004/04/07/examples/wiring.zip)。
因為領域對象(domain objects)將和每一層交互,我們將首先創建它們。這些對象將使我們定義什么應該被持久化,什么業務邏輯應該被提供,和哪種表現接口應該被設計。然后,我們將配置持久層和用Hibernate領域對象(domain objects)定義“對象-關系”映射(object-to-relational mappings)。然后,我們將定義和配置我們的業務對象(business objects)。在有了這些組件后,我們就能討論用Spring把這些層連在一起。***,我們將提供一個表現層(presentation layer),它知道怎樣和業務服務層(business service layer)交流和知道怎樣處理從其它層產生的異常(exceptions)。
【編輯推薦】