Java關係型數據庫持久化框架彙總

多年以來,關係型數據庫一直是Java企業級應用中的統治者。對關係型數據庫的操作從最開始的直接使用原生JDBC開始,到後來Spring基於JDBC開發了JDBC模板,再到一大批ORM框架的出現,大大簡化了對數據庫的操作,包括Hibernate,iBATIS,JDO以及JPA等,最後是Spring Data JPA幾乎給我們提供了一個完美的數據庫操作方案,開發應用非常方便。這裏對這幾種類型的框架做一個簡單的總結,詳細代碼可以參考《Spring實戰》(第四版)。

1. 原生JDBC

直接使用原生的JDBC操作數據庫的API,你需要處理與數據庫訪問相關的所有事情,包括數據庫資源的管理和異常的處理。

使用原生JDBC進行一次插入操作的代碼的80%都是樣板代碼,包括獲取和關閉數據庫鏈接,SQL語句,異常處理等等,這些都是可以被自動生成的。

2. JDBC模板

Spring將JDBC中的樣板代碼抽象到了模板類中,提供了JDBC模板,用於承擔數據庫資源的管理和異常處理工作,簡化了JDBC代碼。

Spring提供了兩種模板類以供選擇:JdbcTemplate和NamedParameterJdbcTemplate。

3. ORM框架

我們發現JDBC Template中還是有很多樣板代碼,需要我們自己將對象屬性映射到數據庫實體的列上。

這時ORM(對象/關係映射,object-relational mapping)幫我們簡化了這些問題,使得我們可以將精力集中於業務代碼的開發。ORM框架包括Hibernate,iBATIS,JDO(Java Data Objects)和JPA(Java Persistence API),Spring對這些框架均提供了支持。

ORM框架除了可以將Java對象和數據庫實體進行映射,而且提供了延遲加載、預先抓取、級聯操作等高級特性,Spring對這些ORM的集成又提供了很多額外的特性,如聲明式事務和透明的異常處理等。

4. Spring Data JPA

使用ORM框架雖然大大簡化了Java對象和數據庫實體映射相關的代碼,但是我們還是需要對大量數據庫操作編寫自己的實現代碼,這些代碼都是模式化的,很容易編寫。因此Spring Data在JPA的基礎之上實現了Spring Data JPA框架,用以自動生成數據庫操作代碼,我們只需要編寫Repository接口就可以了,不需要實現類。

在平時的應用開發中,我大多使用SpringBoot進行開發,此時使用Spring Data JPA框架進行數據庫操作特別方便。

之前一直在幫業務團隊做一些軟件工程實踐相關的事情,感覺數據持久化框架的演變過程跟軟件工程實踐還是有一些共通之處,都是將一些重複的模式化的操作進行自動化,在底層框架或者由自動化腳本來實現,這樣我們就可以將更多的精力集中於核心業務邏輯的開發,以此提升軟件開發效率。


參考自:《Spring 實戰》第四版

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