精通Hibernae讀書筆記1

 第一章 java應用分層架構及技術模型

1 hibernate是什麼

 A 它是連接java應用程序和關係數據庫的中間件

 B 它對JDBCAPI進行了封裝,負責java對象的持久化

 C 對分層的軟件架構中它位於持久化層,封裝了所有數據訪問細節,使業務邏輯層可以專注於實現業務邏輯

 D 它是一種ORM映射工具,能夠建立面向對象的領域模型和關係數據庫模型直接的映射

1.1應用程序的分層體系結構

 

 

 

 

 

 

 

 

 

三層應用程序

A表現層:提供與用戶交互的界面。GUI(Graphical User Interface,圖形用戶界面)和基於瀏覽器的Web頁面時表述層的兩個典型的例子。

B業務邏輯層:實現各種業務邏輯。

C數據層:負責存放和管理應用的持久化業務數據

1.1.1區分物理層和邏輯層

  1。物理分層即每一層都運行在網絡的單獨的機器的單獨節點上,意味着創建分佈式軟件系統

  2。邏輯分層:指的每一層有一個相對獨立的軟件模塊來實現,它能完成特定的功能。

1.1.2軟件層的特徵

  A每個層由一組相關的類或組件構成,共同完成特定的功能

  B 層與層之間存在自上而下的依賴關係,即上層組件會訪問下層組件的API,而下層組件不應該依賴上層組件。

  C每個層對上層公開API,但具體的實現細節對外透明

基本特徵就是層與層之間存在自上而下的依賴關係

軟件層向上公開接口封轉實現細節

1.1.3軟件分層的優點

1.伸縮性

     伸縮性指應用程序是否能支持更多的用戶。應用的層越少,可以增加資源(如CPU和內存)的地方就越少。層數越多,可以將每層分佈在不同的機器上

2.可維護性

     可維護性指的是當發生需求變化,只需修改軟件的某一部分,不會影響其他部分的代碼。

3.可擴展性

     可擴展性指的是在現有系統中增加新功能的難易程度。層數越多,就可以在每個層中提供擴展點,不會打破應用的整體框架。

4.可重用性

     可重用性指的是程序代碼沒有冗餘,同一個程序能滿足多種需求。例如,業務邏輯層可以被多種表述層共享。

5.可管理性

     可管理性指的是管理系統的難易程度。將應用程序分爲多層後,可以將工作分解給不同的開發小組,從而便於管理。應用越複雜,規模越大,需要的層就越多。

 

1.1.4軟件分層的缺點

對開發人員的要求越來越高;調試困難

1.1.5Java應用的持久化層

1.2軟件的模型

在軟件開發領域,模型用來表示真實世界的實體。

在軟件開發的不同階段,需要爲目標系統創建不同類型的模型:

在分析階段,需要創建概念模型。

在設計階段,需要創建域模型和數據模型。

模型之間的關係

1.2.1概念模型

概念模型用來模擬問題域中的真實實體。

概念模型描述了每個實體的概念和屬性,以及實體之間的關係。

概念模型並不描述實體的行爲。

不管是技術人員還是非技術人員都能看得懂概念模型,他們可以很容易的提出模型中存在的問題,幫助系統分析人員及早對模型進行修改。

實體與實體之間存在三種關係

CustomerOrder實體: 一對多。一個客戶有多個訂單,而一個訂單隻能屬於一個客戶。

CategoryItem實體:多對多。一個商品類別包含多個商品,而一個商品可以屬於多個商品類別。

OrderItem實體:多對多。一個訂單包含多個商品,而一個商品可以屬於多個訂單。

CustomerShoppingCart實體:一對多。一個客戶有多個購物車,而一個購物車只能屬於一個客戶

ShoppingCartItem實體:多對多。一個購物車包含多個商品,而一個商品可以屬於多個購物車。

1.2.2關係數據模型

關係數據模型是在概念模型的基礎上建立起來的,用於描述這些關係數據的靜態結構,它由以下內容組成:

一個或多個表

表的所有索引

視圖

觸發器

表與表之間的參照完整性

 

表的主鍵

在關係數據庫表中,用主鍵來識別記錄並保證每條記錄的惟一性。作爲主鍵的字段必須滿足以下條件:

不允許爲null

每條記錄具有惟一的主鍵值,不允許主鍵值重複。

每條記錄的主鍵值永遠不會改變。

使用代理主鍵機制,代理主鍵不具有業務含義,不會被改變。

1.2.3域模型

域模型是面向對象的。在面向對象術語中,域模型也可稱爲設計模型。域模型由以下內容組成:

具有狀態和行爲的域對象

域對象之間的關係

關聯

依賴

聚集

一般化

1.2.4域對象

域對象可以代表業務領域中的人、地點、事物或概念。域對象分爲以下幾種:

實體域對象:業務領域的名詞

過程域對象:業務領域的動詞

事件域對象:業務領域中的事件

 1。實體域對象

實體對象可以代表人、地點、事物或概念。例如客戶、訂單、商品等作爲實體域對象。

Java EE應用中,這些名詞可以作爲實體EJB

對於普通的Java應用,這些名詞可以作爲包含狀態和行爲的JavaBean。採用JavaBean形式的實體域對象也稱爲POJOPlain Old Java Object)。

爲了使實體域對象與關係數據庫表中記錄對應,可以爲每個實體域對象分配惟一的OIDObject Identifier,即對象標識符),OID是關係數據庫表中的主鍵(通常爲代理主鍵)在實體域對象中的等價物。

2.過程域對象

過程域對象代表應用中的業務邏輯或流程。它們通常依賴於實體域對象。

可以把業務領域中的動詞,例如客戶發出訂單、登入應用等作爲過程域對象。

Java EE應用中,它們通常作爲會話EJB或者消息驅動EJB

在非Java EE應用中,它們可作爲常規的JavaBean,具有管理和控制應用的行爲。

過程域對象也可以擁有狀態,例如在J2EE應用中,會話EJB可分爲有狀態和無狀態兩種類型。

3事件域對象

事件域對象代表應用中的一些事件(如異常、警告或超時)。這些事件通常由系統中的某種行爲觸發。

例如在多用戶環境中,當一個客戶端程序更新了某種實時數據,服務器端程序會創建一個事件域對象,其他正在瀏覽相同數據的客戶端程序能夠接受到這一事件域對象,隨即同步刷新客戶界面

1.2.5域對象之間的關係

關聯(Association):指類的引用關係,包括一對一,一對多,多對多

依賴(Dependency):類的訪問關係。往往出現在過程域對象依賴實體域對象

聚集(Aggregation):是指整體與部分之間的關係,在實體域對象之間是常見的。

一般化(Generalization) :一般化指的是類之間的繼承關係

1.2.6域對象的持久化概念

域對象的持久化概念

狹義的理解,“持久化”僅僅指把域對象永久保存到數據庫中

廣義的理解,“持久化”包括和數據庫相關的各種操作:

保存:把域對象永久保存到數據庫中。

更新:更新數據庫中域對象的狀態。

刪除:從數據庫中刪除一個域對象。

加載:根據特定的OID,把一個域對象從數據庫加載到內存中。

查詢:根據特定的查詢條件,把符合查詢條件的一個或多個域對象從數據庫加載到內存中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章