Hibernate 是什麼?四重視角定義
- 中介軟體:連接 Java 應用與關聯式資料庫
- JDBC 封裝層:負責 Java 物件持久化,屏蔽底層 SQL/JDBC 細節
- 持久層框架:分層架構中封裝所有資料存取邏輯,業務層專注業務規則
- ORM 工具:建立物件域模型與關聯模型的雙向映射
軟體分層架構背景知識
三層職責
- 表現層:用戶交互介面(Web/WIMP)
- 業務邏輯層:核心業務規則、驗證、流程編排
- 資料層:持久化存取、資料庫交互
分層兩種形式
- 物理分層:各層部署於不同機器 → 分散式系統
- 邏輯分層:單一模組內模組化分離
良好分層特徵
- 各層由相關類/組件構成,完成特定功能
- 自上而下依賴:上層呼叫下層 API,下層不依賴上層
- 對上層公開 API,實現細節封裝透明
分層收益與代價
| 收益 | 代價 |
| 伸縮性、可維護性、可擴展性、可重用性、可管理性 |
設計門檻提高、除錯難度增加、效能微損 |
關聯式資料庫建模鐵律
- 主鍵保證唯一性,**不具備業務含義**(業務欄位皆可變更)
- 核心理論:**切勿賦予關鍵字任何業務意義**
域模型四種關係
- 關聯:類之間引用關係(單向/雙向)
- 依賴:存取屬性/方法、實例化其他類
- 聚集:整體與部分關係
- 繼承:泛化/特化
總結
Hibernate 核心價值在於:**以元資料驅動的 ORM 映射,將持久化邏輯從業務代碼中剝離,實現真正的分層解耦**,同時提供一級/二級快取、延遲載入、HQL/Criteria 查詢等豐富企業級特性。