由底向上學Web開發——為什么需要持久層框架?


前言###

任何一種企業級Java Web應用,都離不開數據庫操作,也就是數據的存儲與獲取。特別是對于大量數據的高效操作,在大數據時代下尤其被重視。因此,在利用Java開發企業及應用時,如何提高對數據操作的效率,也就成了開發需要考慮的要素之一。
而持久層框架,也就是為此應運而生。
通常來講,在不使用特定的持久層框架的前提下,Java開發者需要書寫大量的重復性代碼,并嵌入相關的SQL語句來完成與數據庫的交互(主要是基本數據操作業務,如單一數據的CRUD SQL代碼,以及JDBC相關的代碼)。而使用了特定的持久層框架后,在于數據庫連接、交互方面的代碼量會顯著減少。
其中的一個較為重要原因原因在于持久層框架完成了"面向對象"到"面向關系"的轉換。這使得可以通過直接操作Java對象來完成對數據庫中對應數據的操作。


面向關系面向對象 的差異###

對于Java學習者,都十分清楚的是Java語言是一種面向對象的語言,那么其特征必然包含了

  • 繼承
  • 多態
  • 封裝

等面向對象所應具備的特征。
而對象間的關系亦是通過類圖來完成梳理、建模。

類圖舉例

另一方面,對于目前開發用到的數據庫而言,大部分是關系型數據庫。對于關系型數據庫,是不存在對象這樣一個概念的,也就不會有面向對象的特征。
其中存儲的實體對象間的關系更多的是通過表結構來表現。
關系型數據庫中的數據關系是通過E-R(實體-關系圖)來梳理、實現。

E-R圖舉例

差異帶來的問題###

那么問題來了,當從一個面向關系的數據庫中存取一個面向對象的數據,那么必然會由于一些問題:

  1. 數據粒度不同:面向對象的模型在構建時是基于客觀實體的,而面向關系的數據表在構建時則是基于字段的,這樣的話,面向對象模型會比面相關系的模型擁有更粗的粒度。
  2. 繼承關系的表現:面相關系的模型無法通過“繼承”表現出父子類間的關系。那么基于繼承的多態特征也無法表現出來。
  3. 對象間關系:關系型模型無法明確地確定面向對象模型間的依賴關系。
  4. 數據導航:同一個對象關系網中,兩個對象間的數據導航在兩種模型下是不同的。

造成數據的不匹配。


持久層框架###

那么為了解決以上的問題,也就是將面向對象模型和面向關系的模型連接起來,使得Java Programing對象可以和數據庫中的數據對應起來,就需要一座連接兩種模型的“橋梁”,這座“橋”就是ORM(Object-Relation Mapping,對象關系映射)機制。而將這種機制與提高Java開發數據庫效率的目的相結合的產物就是持久層框架。
通常而言,Java 持久層框架需要完成這樣的工作:

  1. 將數據保存到可掉電式存儲設備中。
  2. 為了提高操作效率,提供ORM機制,并封裝必要的數據操作方法,提供方法接口。
  3. 在前兩點基礎上,可以提供額外的數據業務,如分頁、排序等。

總結###

至此,總結一下。
之所以Java Web開發需要使用持久層框架,目的有三:

  1. 作為基礎目的,完成Java編程對數據庫數據的操作。
  2. 作為主要目的,提高Java編程對數據庫數據操作的效率。
  3. 作為附加目的,通過挑選合適的框架,實現所需要的其他數據業務,便與開發。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容