ORM框架
概述
在學習MyBatis之前,先來看看什么是ORM框架。
ORM全稱Object/Relation Mapping,對象/關系數據庫映射,功能為完成對象的編程語言到關系數據庫的映射,可以將其當成應用程序和關系型數據庫的橋梁。
當使用面向對象的編程語言來進行應用開發時,從項目一開始就采用的是面向對象的思想(分析、設計、編程等),但到了持久層數據庫訪問時,又必須重返關系數據庫的訪問方式,所以就產生了ORM框架,可以把關系數據庫包裝成面向對象的模型。
ORM是面向對象程序設計語言和關系數據庫發展不同步時的中間解決方案。采用ORM框架后,應用程序不再直接訪問底層數據庫,而是以面向對象的方式來操作持久化對象(創建、修改、刪除等),而ORM框架則將這些面向對象的操作轉換成底層的SQL操作。
ORM框架的唯一作用就是:把對持久化對象的保存、修改、刪除等操作,裝換成對數據庫的操作,編程人員可以以面向對象的方式操作持久化對象,而ORM框架則負責將相關操作轉換成對應的SQL(結構化查詢語言)操作。
ORM框架的映射方式
ORM框架提供了持久化類和數據表之間的映射關系,所有的ORM框架基本都遵循相同的映射思路:
1、數據表映射類:持久化類被映射到一個數據表。編程人員使用這個持久化類來創建實例、修改屬性或刪除實例時,系統自動會轉換為對這個表進行CRUD操作。
2、數據表的行映射對象:持久化類會生成很多實例,每個實例對應數據表中的一行記錄。當程序在應用中修改持久化類的某個實例時,ORM工具將會將其轉換為對於對應數據表中特定的行的操作。
3、數據表的列映射對象的屬性:當程序修改某個持久化對象的指定屬性時,ORM會將其轉換成對於對應數據表中指定數據行、指定列的操作。
基於這種基本的映射方式,ORM框架可以完成對象模型和關系模型之間的相互映射。
因此在ORM框架中,持久化對象是一種媒介,應用程序只需操作持久化對象,ORM框架則負責將這種操作轉換為底層數據庫操作。這種轉換對開發者是透明的,開發者無須關心內部細節,從而將開發者從關系模型中解放出來,使得開發者能以面向對象的思維操作關系數據庫。
流行的ORM框架
1、JPA:JPA本身是一種ORM規范,並不是ORM產品。相對於其他開源ORM框架,優勢在於其是官方標准,因此具有通用性,若應用程序是面向JPA編程,那么應用程序就可以在各種ORM框架之間切換。
2、Hibernate:被選為JBoss的持久層解決方案,屬於Red Hat組織。其靈巧的設計、優秀的性能和豐富的文檔,使其成為最流行的開源ORM框架之一。
3、MyBatis:嚴格意義上並不能稱之為ORM框架,它是半自動化的ORM實現,但它並不支持純粹的面向對象操作,而是允許編程人員直接編寫SQL語句,更加靈活。