以前就據說過數據持久化操做這類的詞,雖然使用過一點點相關的內容,好比Hibernate中的session這個事物管理器,但一直不理解數據持久化的含義和原理方面,因此在查找了必定的資料後,我總結出瞭如下內容。java
持久化的含義就是把內存中的數據(好比內存中的對象——用對象來封裝數據)保存到可永久保存的存儲設備或關係型數據庫中(常見關係型數據庫有:mysql,oracle,sqlserver等)。那麼持久層的定義也就很明顯了,持久層就是在某個系統中專門實現數據持久化的一個邏輯層面,將數據使用者與數據實體相關聯——對象數據映射。mysql
ORM-Object/Relational Mapper——「對象-關係型數據庫映射組件」,即在面向對象開發語言(好比java)中的對象與關係型數據庫之間創建映射。這就要求須要使用面向對象的開發語言和關係型數據庫進行開發。sql
備註:建模領域中的 ORM 爲Object/Role Modeling(對象角色建模)。另外這裏是「O/R Mapper」而非「O/R Mapping」。相對來說,O/R Mapping 描述的是一種設計思想或者實現機制,而 O/R Mapper指以O/R原理設計的持久化框架(Framework),包括 O/R機制還有 SQL自生成,事務處理,Cache管理等。數據庫
因此,綜合以上的內容能夠大體這樣理解:數據持久化就是一種操做對象和關係型數據庫之間聯繫的機制。用比較官方的語言來講,數據持久化就是將內存中的數據模型轉換爲存儲模型,以及將存儲模型轉換爲內存中的數據模型的統稱。session
在這塊我再強行舉個例子,好比使用過mvc框架的同窗,經過對配置文件(如:servletcontext)等內容的更改,可讓咱們方便的連接到不一樣的數據庫,而且可讓咱們方便的將model對象與數據庫進行綁定或者說是映射,而後能夠經過一些ORM組件,好比Hibernate,能夠方便的對數據庫進行增刪改查等操做,不用寫不少的sql語句,直接經過組件就能夠自動生成。
架構
在目前的企業應用系統設計中,MVC,即 Model(模型)- View(視圖)-Control(控制)爲主要的系統架構模式。MVC 中的Model 包含了複雜的業務邏輯和數據邏輯,以及數據存取機制(如 JDBC的鏈接、SQL生成和Statement建立、還有ResultSet結果集的讀取等)等。將這些複雜的業務邏輯和數據邏輯分離,以將系統的緊耦合關係轉化爲鬆耦合關係(即解耦合),是下降系統耦合度迫切要作的,也是持久化要作的工做。MVC 模式實現了架構上將表現層(即View)和數據處理層(即Model)分離的解耦合,而持久化的設計則實現了數據處理層內部的業務邏輯和數據邏輯分離的解耦合。而 ORM 做爲持久化設計中的最重要也最複雜的技術,也是目前業界熱點技術。mvc
簡單來講,按一般的系統設計,使用 JDBC 操做數據庫,業務處理邏輯和數據存取邏輯是混雜在一塊兒的。oracle