Hibernate 是獨立的持久層框架,與 App Server、EJB 無強綁定。凡 JDBC 可用之處 (Java 應用、DAO 實作、甚至 BMP 中) 均可引入 Hibernate。三種主流架構對比:
| 架構 | 呼叫鏈 | 定位 |
|---|---|---|
| 傳統 EJB | Session Bean ↔ Entity Bean ↔ DB | 標準但笨重 |
| JDBC 直連 | Session Bean ↔ DAO ↔ JDBC ↔ DB | 高效但開發繁瑣 |
| Hibernate 整合 | Session Bean ↔ DAO ↔ Hibernate ↔ DB | 平衡開發效率與執行效能 |
| 維度 | JDBC | Hibernate | Entity Bean |
|---|---|---|---|
| 記憶體消耗 | ⭐⭐⭐ (最省) | ⭐⭐ | ⭐ (最差) |
| 執行效率 | 極難寫到最優 | ⭐⭐⭐ (實際專案通常最快) | ⭐ (差距大) |
| 開發效率 | 中等 | 小專案較慢,大型複雜映射極快 | 工具支援下簡單專案快,複雜易失敗 |
| 分散式/安全/叢集 | 皆依賴 Session Bean Facade,無差異 | ||
精力耗於避開 N+1 查詢、配置優化參數、學習設計模式,而非領域建模本身。
Hibernate 非銀彈,但為複雜持久層帶來前所未有的建模自由度。駕馭它的關鍵不在記憶 API,而在建立「以領域模型為中心、以效能測試為準則」的架構治理能力。