ORM,全稱為Object-Relational Mapping,即對象關係映射,是一種程式技術,用於實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬對象資料庫”。 ORM技術位於應用和資料庫之間,作為一層中間件,用於實體對象(例如 POJ ...
ORM,全稱為Object-Relational Mapping,即對象關係映射,是一種程式技術,用於實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬對象資料庫”。
ORM技術位於應用和資料庫之間,作為一層中間件,用於實體對象(例如 POJO)和關係數據(資料庫表的行)之間的轉換。簡單來說,ORM旨在建立領域模型(也稱為實體對象,例如 POJO)和資料庫表之間的映射,使得對實體對象的操作可以轉換為對資料庫表的操作。例如,當需要新增一個實體對象時,只需要創建一個新的實體對象,將數據傳給對象,然後執行存儲操作,ORM框架會自動負責建立實體對象的屬性和資料庫表的欄位的對應,然後自動生成相應的SQL語句並執行,將數據持久化到資料庫。
ORM思維的核心在於將資料庫表結構映射為面向對象編程語言中的實體對象,使得開發者可以使用面向對象的方式進行資料庫操作,而無需關心底層的SQL語句和資料庫表結構。這種思維可以大大提高開發效率,減少維護複雜數據訪問層的成本,同時也使得代碼更加簡潔、易讀和易維護。
總的來說,ORM思維是一種重要的編程思想,它使得開發者可以更加高效地進行資料庫操作,同時也降低了開發難度和成本。在實際開發中,合理使用ORM技術可以帶來很多好處,但也需要註意其可能帶來的問題,如性能問題、過度封裝導致的靈活性降低等。因此,在使用ORM技術時,需要根據實際情況進行權衡和選擇。
最終目的: 讓我們可以使用面向對象思維進行資料庫操作!!!
ORM框架通常有半自動和全自動兩種方式
ORM框架通常分為全自動和半自動兩種方式,這主要取決於框架如何處理數據映射和SQL語句的生成。
全自動ORM框架,如Hibernate,提供了最高級別的自動化。在這種模式下,開發者只需要調用相關介面或方法,框架就會自動完成所有的數據映射和SQL語句生成。例如,開發者可以通過定義實體類(POJO)來映射資料庫表,框架會根據這些實體類自動生成對應的SQL語句,完成數據的增刪改查等操作。這種方式極大地簡化了開發者的工作,但也可能導致一定的靈活性降低,因為開發者無法直接控制生成的SQL語句。
半自動ORM框架,如MyBatis,則需要開發者手動完成一部分工作。在這種模式下,開發者需要自行定義SQL語句,並通過映射文件或註解將SQL語句與實體類關聯起來。框架會根據這些映射關係,將實體對象轉換為SQL語句的參數,以及將查詢結果映射回實體對象。這種方式在提供了一定程度的自動化的同時,也保留了開發者對SQL語句的直接控制,因此靈活性更高。
總的來說,全自動和半自動ORM框架各有優缺點,選擇哪種方式主要取決於開發者的具體需求和偏好。例如,如果開發者希望儘可能地減少手寫代碼和提高開發效率,那麼全自動ORM框架可能是一個更好的選擇。而如果開發者對SQL語句有更高的控制需求,或者希望更好地優化資料庫性能,那麼半自動ORM框架可能更適合。
半自動和全自動 ORM 框架的區別
半自動和全自動 ORM 框架的主要區別在於 SQL 語句的生成和控制權。
全自動 ORM 框架,如 Hibernate,會根據實體類(POJO)和資料庫表之間的映射關係,自動生成對應的 SQL 語句。開發者只需要通過調用框架提供的方法,就可以完成數據的增刪改查等操作,無需手動編寫 SQL 語句。這種方式極大地簡化了開發者的工作,同時也減少了出錯的可能性。但是,由於框架自動生成 SQL 語句,開發者無法直接控制生成的 SQL 語句,因此可能在某些情況下無法滿足特定的需求或優化。
半自動 ORM 框架,如 MyBatis,則需要開發者手動編寫 SQL 語句,並通過映射文件或註解將 SQL 語句與實體類關聯起來。框架會根據這些映射關係,將實體對象轉換為 SQL 語句的參數,以及將查詢結果映射回實體對象。這種方式在提供了一定程度的自動化的同時,也保留了開發者對 SQL 語句的直接控制,因此靈活性更高。開發者可以根據具體需求,編寫和優化 SQL 語句,以滿足特定的需求或提高資料庫性能。
總的來說,全自動和半自動 ORM 框架各有優缺點,選擇哪種方式主要取決於開發者的具體需求和偏好。如果開發者希望儘可能地減少手寫代碼和提高開發效率,那麼全自動 ORM 框架可能是一個更好的選擇。而如果開發者對 SQL 語句有更高的控制需求,或者希望更好地優化資料庫性能,那麼半自動 ORM 框架可能更適合。