ORM框架
ORM(Object/Relational Mapping,即對象關係映射)就是一種爲了解決面向對象與關係數據庫中數據類型不匹配的技術,它通過描述Java對象與數據庫表之間的映射關係,自動將Java應用程序中的的對象持久化到關係型數據庫的表中。ORM的工作原理:
從圖中可以看出,使用ORM框架後,應用程序不再直接訪問底層數據庫,而是以面向對象的方式來操作持久化對象 (Persisent Object,PO),而ORM框架則會通過映射關係將這些面向對象的操作轉換成底層的SQL操作。
ORM框架的產品有很多,常見的有Hibernate和MyBatis。
Hibernate
Hibernate是一個全表映射的框架。開發者只需要定義好持久化對象到數據庫的映射關係,就可以通過Hibernate提供的操作完成持久層操作。
優點:
- 開發者不需要熟練地操作SQL語句的編寫。Hibernate會根據制定的存儲邏輯,自動的生成對應的SQL,並調用JDBC接口執行,所以其開發效率會高於MyBatis。
缺點:
- 在多表關聯時,對SQL查詢的支持較差;
- 更新數據時,需要發送所有字段;
- 不支持存儲過程;
- 不能通過優化SQL來優化性能等
這些問題導致其只適合在場景不太複雜且對性能要求不高的項目中使用。
MyBatis
MyBatis是一個半自動映射的框架。這裏所謂的"半自動"是相對於Hibernate全表映射而言的,MyBatis需要手動匹配提供POJO、SQL和映射關係,而Hibernate只需提供POJO和映射關係即可。
缺點:
- MyBatis手動編寫SQL,工作量大。
優點:
- 可以配置動態SQL並優化SQL
- 可以通過配置決定SQL的映射規則
- 支持存儲過程
對於一些複雜的和需要優化性能的項目來說,顯示使用MyBatis更加合適。