在 Java 開發中,若直接使用 JDBC 操作資料庫,往往需要編寫大量 SQL 語句,不僅繁瑣且難以維護。為了更好地針對類的屬性進行物件導向操作,Hibernate 應運而生,成為 Java 持久層框架的首選。
簡單來說,Hibernate 是一個中介軟體,負責接收 Java 程式的 SQL 語句並發送至資料庫執行;資料庫返回的結果集會被 Hibernate 自動映射為 Java 物件傳回給應用程式,實現了物件與關係資料的無縫轉換。
理解這三種狀態是掌握 Hibernate 的關鍵:
new 建立,未被持久化,不在 Session 快取中,無資料庫記錄對應。
持久化是將資料從記憶體(資料模型)儲存到持久化設備(儲存模型,如關係型資料庫)的過程。
ORM(Object-Relational Mapping)是持久化的一種解決方案,核心是將物件模型與關係模型映射,透過元資料描述映射關係,讓開發者以操作物件的方式操作資料庫。
hibernate.cfg.xml 主配置檔,設定資料庫連線資訊、方言、映射檔路徑等面向物件的查詢語言,無表、欄位概念,只有類、物件、屬性。語法類似 SQL 但更符合物件導向思維,是最常用的查詢方式。
又稱「物件查詢」,以完全面向物件的 API 封裝查詢構建過程,支援動態組裝查詢條件,程式碼可讀性與型別安全性極佳。
Hibernate 在查詢時不立即載入關聯資料,而是等到真正存取時才發送 SQL,極大降低記憶體佔用、提升效能。支援實體物件、集合、甚至單一屬性的延遲載入。