很多初學者覺得 Hibernate「概念多、配置繁、不如寫 SQL 直觀」。其實在企業級 SSH 項目中,Hibernate 解決了三類核心痛點:
傳統 JDBC 需手動 conn.close()、stmt.close()、rs.close(),漏寫即洩漏連接池。Hibernate Session 封裝了連接獲取、事務提交/回滾、資源釋放,開發者只需關注業務邏輯:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
try {
// 業務代碼
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
session.close(); // 自動歸還連接池
}
保存用戶對比:
| JDBC 寫法 | Hibernate 寫法 |
|---|---|
|
|
複雜查詢同理:Criteria、HQL 面向對象構建,重構時重命名屬性即可聯動修改,避免 SQL 字符串散落難維護。
fetch="join" 或 HQL LEFT JOIN FETCH 優化。@Transactional(readOnly=true) 或 DTO 斷開關聯。Hibernate 不是銀彈,但用對場景(中大型項目、複雜域模型、團隊協作)能節省 40%+ 數據訪問層代碼,是 SSH 棧不可替代的基石。