記錄一次從 SQL Server 2000 遷移至 MySQL 的 Hibernate 配置實戰:MyEclipse DB Browser 配置連接成功但運行報錯,根因在於 hibernate.cfg.xml 未自動更新、MySQL 驅動 JAR 未複製到 WEB-INF/lib。文中詳述逆向工程生成 DAO/Model/.hbm.xml 全流程、主鍵策略選擇、Ajax 調用 Servlet 驗證。
遷移關鍵步驟
- 刪除舊 SQL Server 驅動 JAR(3 個)。
- DB Browser → Edit Connection → 選擇 MySQL 驅動、輸入 URL/用戶/密碼、測試連接成功。
- 關鍵:手動將 MySQL 驅動 JAR (mysql-connector-java-x.x.x.jar) 複製到
WebRoot/WEB-INF/lib,刷新項目。
- 關鍵:手動修改
hibernate.cfg.xml 中的 dialect、driver_class、connection.url、username、password 為 MySQL 配置。
- Hibernate Reverse Engineering 重新勾選表生成 Model/DAO/.hbm.xml,主鍵策略選
assigned(業務主鍵)或 native(自增)。
- Servlet 調用 DAO 測試,Ajax 前端驗證。
常見坑總結
- DB Browser 連接成功 ≠ 運行時類路徑有驅動 JAR。
- MyEclipse 不會自動同步
hibernate.cfg.xml,必須手動編輯。
- 異常
Error Creating SessionFactory 多因方言/驅動/URL 不匹配。
- 控制台輸出
System.out.println 定位 DAO 層調用斷點極其有效。
Hibernate vs ADO.NET 簡評
- Hibernate:XML/註解映射、逆向工程自動生成 DAO、Session 管理、延遲加載、二級緩存,適合複雜領域模型。
- ADO.NET:SqlHelper 手寫 SQL/存儲過程、DataReader/DataSet、輕量直接,適合表驅動、性能敏感場景。
- 核心差異:Hibernate 重「對象圖持久化」,ADO.NET 重「數據集操作」。