在企業系統軟體的開發中,大部分的系統都會使用資料庫來存取資料。對於一個物件導向(Object-Oriented)的Java語言來說,要與目前主流的關連式(Relational)資料庫連接,需要透過SQL介面,依照良好設計Pattern(這些動作一般都在Persistence Tier層),撰寫資料庫存取元件(DAO),轉換物件與關連式資料表之間的資料。這部分的對應牽涉到ORM(Object/Relational Mapping)技術,這部分也就是Hibernate著墨之處了。
存取資料庫的程式碼,通常耗費人力且單調,除錯起來也較麻煩,可能使原本系統的商業邏輯焦點被模糊,造成開發者的一項負擔。因此Hibernate應運而生,為開發者提供了這層ORM服務,期望能省去撰寫原始SQL語法的力氣。這個技術對應用程式開發人員來說,提供了諸多優點:
● 生產力提升(Productivity):減少撰寫資料存取元件程式碼,聚焦在商業邏輯。
● 容易維護(Maintainability):系統程式碼較少,比純手工開發的應用程式容易維護。
● 效能調校(Performance):節省SQL語法除錯時間,多花時間調校SQL邏輯效能。
● 資料庫廠商的獨立性(Vendor independence):免除受限於特定廠商,開發者可於輕量資料庫上開發程式,部署時再安裝至正式的大型資料庫。
開發應用程式若能節省下撰寫原始SQL語法的時間與功夫,相信最直接會反映出來的,是開發速度與人員的負擔,同時系統因為手寫部分較少,除錯時間也會減少。當然,應用程式有很多種,是不是適合使用ORM,則應依照應用程式的特性做出判斷,將對的工具用在對的地方!Hibernate從2001年創立以來,目前已經成為非常知名的ORM Framework。
走訪一趟Amazon網路書城,搜尋《Hibernate in Action》這本書,評價是四顆星半至五顆星等級,也有許多購買者的回應叫好。的確,《Hibernate in Action》這本書是一本Bible級的好書,非常值得一讀。
御駕親征,誰與爭峰
這本書的作者Christian Bauer、Gavin King,兩位都是Hibernate開發小組中的成員。其中Gavin King是Hibernate的創立者,也是EJB 3.0專家委員會中的一員,協助J2EE標準整合ORM技術於其內;Christian則是來自JBoss的顧問,他專精於關連式資料庫與Java語言的資料管理。
從兩位作者的背景可以肯定《Hibernate in Action》這本書一定是忠於原味(作者都出馬了)!並且,由於作者也是EJB專家委員會中的一員,所以EJB 3.0 Persistence API對Hibernate的支援是一定不會少的,目前也都可以在Hibernate本身網站上,看到支援的相關資訊。
範例貫穿,Learning By Doing這本書的風格,如其他「In Action」系列叢書一般,在所要傳達的主文中,結合著許多範例穿梭其中,試圖以Example-Driven的方式,讓閱讀此書的讀者,對於Hibernate的每個重要環節,能反覆熟悉,並加強關連性。除了觀念建立外,能留下深刻的記憶。
這樣的方式恰好相當適合解說Hibernate這個框架,因為它本身並不簡單,有著一定程度的複雜度,所以在理論與概念建立的同時,一面參考實例片段,反覆閱讀此書讓閱讀者對其重點熟悉,看到書本後半部,對前半部的內容仍能有鮮明的印象。
內容充實,觀念基礎打得穩
說到這本書的內容,真是貨真價實,看得出作者的兩把刷子非常夠力!除了內容相當廣,每個點卻也都介紹的很有深度。
從內容編排上基本上可以分成三個層次來談。
書本的前三分之一算是基礎章節,先將觀念闡明-介紹Hibernate框架、重要的介面、運作機制等,讓讀者可以輕鬆上手基本操作;對於Hibernate的功能,以及所能達到透明(不擾亂應用邏輯程式碼的程度)的程度,都是相當棒的!
接著中間三分之一,深度將一步步地追進Hibernate核心,並且在效率方面多所著墨。這部分將會較為困難,由於ORM本身就不是個簡單的議題,牽涉到交易問題(Transaction)、同步問題(Concurrency)、查詢效率問題(Query Efficiency)等,還有進階的Hibernate Mapping Concepts(Hibernate的Type System),筆者建議在頭腦清楚、思緒清晰時來閱讀,效果會比較好。
最後三分之一,對於程式整體性的設計,提供了重要的整理。除了應用前面所有的功能外,從架構的角度出發,談論Hibernate在應用程式中的設計方式。
例如當Hibernate在Web Application的Servlet Engine中,面對大量同時存取服務的使用者,資源如何在多個執行緒(Thread)之間共享又安全地使用?如果應用程式交易(Application Transaction)跨越數個頁面及資料庫交易(Database Transaction)時,該怎麼解決長時間佔用資料庫資源的問題?當Hibernate使用在EJB Container中,與Design Pattern、J2EE Pattern的結合又是如何?效率問題等……此章節提出了許多推薦的作法與設計。
最後,書本將Hibernate需要的自動化工具作了一番介紹。包含Hibernate自己提供的工具,還有XDoclet其他輔助工具等等。透過這些工具,可以避免因為省去撰寫程式碼,卻帶來寫Mapping檔案的另一項困擾。程式設計師可以自行決定要Button-Up、Top-Down,或是Middle-Out的方式來進行程式的開發。
《Hibernate in Action》這本書的內容,至此已經是既多且深了,就如書本封面寫的,The Ultimate Hibernate Reference,真的是一本終極的Hibernate書籍!
有心用心,人人都能學習它
什麼人適合閱讀這本書呢?主要適合開發Java應用程式並存取SQL-based資料庫的開發者使用。這本書談論的內容很廣,筆者建議閱讀者應至少對「物件導向開發」與「SQL-based資料庫」有基本的認識為宜。如果是新手可以著重於框架與觀念的建立,先把基礎打穩,有需要可以來回多瀏覽幾遍;有經驗的開發老手,除觀念建立之外,也應該瞭解Hibernate的核心機制,從架構問題、快取問題、資料庫與應用程式對應問題等等,都有相當詳細的講解。開發時,有疑問隨時翻閱,可以當成一本工具書。
一開始不打算深入或仍無法完全瞭解Hibernate核心的讀者,看完前面基礎章節後,可試著先跳過書本中間較進階的內容,先閱讀後面完整應用程式範例的章節,由Top-Down的方式依例學習,也可以正確的使用。條條大路通羅馬。
在閱讀完《Hibernate in Action》之後,相信讀者對其神奇的魔力,一定是讚嘆有加!而複雜的設定,強記並非正途,前後翻閱、融會貫通的動作非常重要,當使用者能夠對Hibernate有全盤的理解,複雜的設定便可轉化為觀念,複雜程度的感受也就降低了。
幕前幕後,看設計者說設計
書本的附錄也有值得一看之處。有興趣瞭解Hibernate ORM實作策略的人,可以翻閱看看。內容雖然不多,但筆者覺得就好比看HBO電影臺的幕前幕後節目般,對Hibernate設計的初衷,有更深層的瞭解。作者在附錄裡面除了講述設計時一些決策點與考量,也回答了一些使用者可能碰到的問題。知道作者的一些想法是充滿樂趣的,提供給有興趣的朋有參考!
《作者簡介》陳修平
現任艾群科技研發中心資深工程師,致力於行動影像多媒體平臺的開發.畢業於國立中央大學資訊工程研究所資料庫實驗室碩士,專精於J2EE架構設計與開發,多媒體影音平臺建立,行動訊息應用,商業網站建置。通過SCEA、SCJD、SCJP等國際性證照認證。曾參與Ericsson VOD平臺建立、亞太電信環境守護系統、行動SNG保全平臺、以及宜利家居家保全等專案。其他曾參線上衛星影像訂購網站開發,BBS程式開發,與研發個人資訊管理系統(PIM)、同步軟體等產品。
熱門新聞
2025-12-12
2025-12-15
2025-12-12
2025-12-12
2025-12-15
2025-12-12