天天看點

第八章 Hibernate的入門之二

注:希望大家看後,請給我一點評價,無論寫的怎麼樣,希望你們能給我支援。提出你寶貴的意見。我會繼續完善。謝謝您。朋友。

5、域對象的持久化概念

(1)什麼是持久化

     狹義的了解,“持久化”僅僅指把域對象永久儲存到資料庫中;廣義的了解,“持久化”包括和資料庫相關的各種操作。

(2)為什麼要進行持久化

當實體域對象在記憶體中建立後,它們不可能永遠存在。最後,他們要麼從記憶體中清除,要麼被持久化到資料存儲庫中。記憶體無法永久地儲存資料,是以必須對實體域對象進行持久化。否則,如果對象沒有被持久化,使用者在應用運作時建立地訂單資訊将在應用結束運作後随之消失。

(3)什麼域對象需要持久化

當然,并不是所有的域對象都需要持久化,通常隻有實體域對象才需要持久化,另外,有些實體域對象也不需要持久化。

(4)持久化類

持久化類是指其執行個體需要被Hibernate持久化到資料庫中的類。持久化類通常都是域模型中的實體域類,同時持久化類符合JavaBean的規範,包含一些屬性,以及與之對應的getXXX()和setXXX()方法。

6、資料通路有哪些模式

(1)業務邏輯層包含了業務資料和業務過程

l  實體域對象

在分層的軟體結構中,業務邏輯層代表了業務資料和業務邏輯。域對象位于業務邏輯層,實體域對象代表應用運作時的業務資料,它存在于記憶體中,并借助于資料庫實作用于存放永久性的業務資料。

業務資料在記憶體中表現為實體域對象形式,而在關系資料庫中表現為關系資料形式。資料通路代碼負責把實體域對象持久化到關系資料庫中。

l  過程域對象

過程域對象代表應用的業務邏輯。

(2)資料通路模式----業務邏輯和資料通路耦合

在此種模式種的過程域對象中,業務邏輯和資料通路代碼混雜在一起,參見下圖。

(3)資料通路模式----主動域對象模式

由實體域對象負責自身的資料通路細節,這種實體域對象也被稱為主動域對象,參見下圖種的說明。J2EE平台中的BMP  EJB元件就是采用主動域對象模式的一種應用示例。

(4)資料通路模式----ORM模式

在此種模式中,采用在單獨的持久化層由ORM中間件封裝資料通路細節,參見下圖。而ORM中間件提供對象---關系映射服務,當向資料庫儲存一個域對象時,把業務資料由對象形式映射為關系資料形式;當從資料庫加載一個域對象時,把業務資料由關系資料形式映射為對象形式。

(5)資料通路模式---- JDO模式

Java Data Objects(JDO)是SUN公司制定的描述對象持久化語義的标準API。是以采用JDO模式時,整個應用為四層應用結構,參見下圖所示。

嚴格的說,JDO并不是對象-關系映射接口,因為它支援把對象持久化到任意一種存儲系統中,包括: 關系資料庫和面向對象的資料庫。

(6)資料通路模式----CMP模式

在J2EE架構中,CMP(Container-managed Persistence)表示由EJB容器來管理實體EJB的持久化,EJB容器封裝了對象-關系的映射以及資料通路細節。

CMP與ORM的相似之處在于,兩者都提供對象-關系映射服務,都把對象持久化的任務從業務邏輯程式中分離出來;差別在于CMP負責持久化實體EJB元件,而ORM負責持久化POJO,它是普通的基于Java Bean形式的實體域對象。

CMP和ORM相比,前者有以下不足:

l  開發人員開發的實體EJB必須遵守複雜的J2EE規範,而多數ORM中間件不強迫域對象必須滿足特定的規範。

l  實體EJB隻能運作在EJB容器中,而POJO可以運作在任何一種Java環境中。

l  目前,對于複雜的域模型,EJB容器提供的對象-關系映射能力很有限。相比之下,許多ORM中間件提供了完善的對象-關系映射服務。

l  盡管按照J2EE的規範,EJB應該是一種可移植的元件,實際上卻受到很大限制。因為不同廠商生産的CMP引擎差異很大,它們使用的對象-關系映射中繼資料各不相同,使得EJB不能順利的從一個EJB容器移植到另一個EJB容器中。

使用ORM中間件就不存在這樣的問題,以Hibernate為例,它可以無縫內建到任何一個Java系統中。在Java軟體架構領域,在出現基于CMP的實體EJB之前,基于JavaBean形式的實體域對象早就存在了。但是把基于JavaBean形式的實體域對象稱為POJO,卻是最近才發生的事。

POJO(Plain Old Java Object----又普通又古老的Java對象),它和基于CMP的實體EJB相比,既簡單,又具有很高的可移植性,是以聯合使用ORM映射工具和POJO,已經成為一種越來越受歡迎的,用于取代CMP的持久化方案。

今天先寫到這,後面的内容以後再寫。。。。。

本文轉自 weijie@java 51CTO部落格,原文連結:http://blog.51cto.com/weijie/66461,如需轉載請自行聯系原作者