應用程序的分層體系結構
隨著計算機應用軟件的發展應用程序逐漸由單層體系結構發展為多層體系結構其中三層結構是目前典型的一種應用軟件結構如圖左
表述層提供與用戶交互的界面如GUI(圖形用戶界面)web頁面等
業務邏輯層負責各種業務邏輯直接訪問數據庫提供對業務數據的保存更新刪除和查詢操作
數據庫層負責存放管理應用的持久性業務數據
三層結構的特點是
所有下層向上層提供調用的接口
具體實現細節對上層透明
層與層之間存在自上而下的依賴關系
即上層會訪問下層的API
但下層不依賴於上層
持久化層(如圖右)
()什麼叫持久化?
在圖右中分離出的持久化層封裝了數據訪問細節為業務邏輯層提供了面向對象的API
持久(Persistence)即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤)持久化的主要應用是將內存中的數據存儲在關系型的數據庫中當然也可以存儲在磁盤文件中XML數據文件中等等
()什麼叫持久層?
持久層(Persistence Layer)即專注於實現數據持久化應用領域的某個特定系統的一個邏輯層面將數據使用者和數據實體相關聯
()為什麼要持久化?增加持久層的作用是什麼?
數據庫的讀寫是一個很耗費時間和資源的操作當大量用戶同時直接訪問數據庫的時候效率將非常低如果將數據持久化就不需要每次從數據庫讀取數據直接在內存中對數據進行操作這樣就節約了數據庫資源而且加快了系統的反映速度
增加持久化層提高了開發的效率使軟件的體系結構更加清晰在代碼編寫和系統維護方面變得更容易特別是在大型的應用裡邊會更有利同時持久化層作為單獨的一層人們可以為這一層獨立的開發一個軟件包讓其實現將各種應用數據的持久化並為上層提供服務從而使得各個企業裡做應用開發的開發人員不必再來做數據持久化的底層實現工作而是可以直接調用持久化層提供的API
()目前在持久化層領域實現模式有以下幾種
A 業務邏輯和數據訪問耦合
B 主動域對象模式
C ORM模式
D JDO模式
E CMP模式
ORM介紹
ORM(Object Relational Mapping)即對象關系映射
指以O/R原理設計的持久化框架(Framework)包括 O/R機制SQL自生成事務處理和Cache管理等
ORM的實現思想就是將關系數據庫中表的數據映射成為對象以對象的形式展現這樣開發人員就可以把對數據庫的操作轉化為對這些對象的操作因此它的目的是為了方便開發人員以面向對象的思想來實現對數據庫的操作
常用的ORM中間件有
Apache OJB ()
Cayenne ()
Jaxor ()
Hibernate ()
iBatis ()
jRelationalFramework ()
mirage ()
SMYLE ()
TopLink ()
其中 Hibernate 的輕量級 ORM 模型逐步確立了在 Java ORM 架構中領導地位甚至取代復雜而又繁瑣的 EJB 模型而成為事實上的 Java ORM 工業標准而且其中的許多設計均被 JEE 標准組織吸納而成為最新 EJB 規范的標准
二 Hibernate定義
Hibernate是一種Java語言下的對象關系映射解決方案 它是一種自由開源的軟件它用來把對象模型表示的對象映射到基於SQL 的關系模型結構中去為面向對象的領域模型到傳統的關系型數據庫的映射提供了一個使用方便的框架
三 Hibernate的作用
Hibernate 不僅管理Java 類到數據庫表的映射(包括從Java數據類型到SQL數據類型的映射)還提供數據查詢和獲取數據的方法可以大幅度減少開發時人工使用SQL 和JDBC 處理數據的時間
它的設計目標是將軟件開發人員從大量相同的數據持久層相關編程工作中解放出來無論是從設計草案還是從一個遺留數據庫開始開發人員都可以采用Hibernate
四 Hibernate的應用
Hibernate對JDBC進行了非常輕量級的對象封裝使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫 Hibernate可以應用在任何使用JDBC的場合它既可以在Java的客戶端程序使用也可以在Servlet/JSP的Web應用中使用最具革命意義的是Hibernate可以在應用EJB(Enterprise JavaBeans是Java應用於企業計算的框架)的JEE架構中取代CMP完成數據持久化的重任
五 Hibernate API簡介
Hibernate API中的接口可以分為以下幾類
() 提供訪問數據庫的操作的接口包括sessionTransactionQuery接口
() 用於配置Hibernate的接口Configuration
() 間接接口使應用程序接受Hibernate內部發生的事件並作出相關的回應包括InterceptorLifecycleValidatable
() 用於擴展Hibernate功能的接口如UserTypeCompositeUserTypeIdentifierGenerator接口
Hibernate內部還封裝了JDBCJTA(Java Transaction API)和JNDI(Java Naming And Directory Interface)其中JDBC提供底層的數據訪問操作只要用戶提供了相應的JDBC驅動程序Hibernate可以訪問任何一個數據庫系統JTA和JNDI使Hibernate能夠和JEE應用服務器集成
Hibernate的核心接口框圖
六 Hibernate的優缺點
()優點
aHibernate 使用 Java 反射機制 而不是字節碼增強程序來實現透明性
bHibernate 的性能非常好因為它是個輕量級框架映射的靈活性很出色
c 它支持各種關系數據庫從一對一到多對多的各種復雜關系
()缺點
Hibernate限制您所使用的對象模型例如一個持久性類不能映射到多個表
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28756.html