選型三維度:選擇、時機、優缺點
面向物件模型與關聯式資料庫阻抗失配,持久化框架扮演關鍵中介角色。本文依「選什麼、何時用、利弊何在」三維度剖析四大主流框架。
1. Entity EJB (CMP/BMP)
適用時機
- 需要容器服務:事務、安全、並發控制、計時器
- 資源充足、追求極致擴展性 (Instance Pooling、Passivation/Activation)
- 已部署 Java EE 應用伺服器,EJB 容器現成可用 (「政治優勢」)
避坑指南
- 僅需持久化功能,不想承擔容器資源開銷
- 資料源非關聯式資料庫 (CMP 支援有限)
- 團隊缺乏 EJB 專業知識 (學習曲線陡峭)
優缺點
| 優勢 | 缺點 |
| 分散式元件模型、優異擴展性、成熟穩定、EJB 3.0 加入標註/計時器 | 複雜術語多、無持久化獨立性、遠端介面效能挑戰、資源密集 |
2. Java Persistence API (JPA)
適用時機
- 想要標準化、輕量、可在 Java SE/EE 通用的持久化方案
- 吸收 Hibernate/TopLink/JDO/EJB 優點,採 POJO + 標註
- 專案已升級 Java EE 5+
避坑指南
- 環境仍停留在 Java EE 1.4 / JDK 1.4
- 需要容器級服務 (事務邊界、安全攔截) 而不想自行整合 Spring
優缺點
| 優勢 | 缺點 |
| 標準化、融合多框架優點、SE/EE 通用、無強制容器 | 規範較新仍在演進、需廠商實作 (如 Hibernate/TopLink Essentials) |
3. Hibernate
適用時機
- 追求簡單、靈活、免費開源
- 需整合 Spring、Struts 等框架
- 從單機到叢集環境皆需支援
避坑指南
- 團隊不願承擔額外框架維護成本
- 強制需要容器服務且不想引入 Spring
優缺點
| 優勢 | 缺點 |
| 易學易用、極度靈活 (有無容器皆可)、叢集擴展佳、CGLIB 優化效能、開源免費 | 仍有學習/維護成本、缺乏商業廠商背書 (社群支援為主) |
4. TopLink (Oracle)
適用時機
- 技術棧高度 Oracle 化 (WebLogic, Oracle DB, ADF 等)
- 需要高階快取同步、查詢快取、叢集效能優化
避坑指南
- 非 Oracle 技術棧 (主流 AS: WebSphere, JBoss, WebLogic 佔多數)
- 預算敏感、偏好開源
優缺點
| 優勢 | 缺點 |
| Oracle 全棧整合最佳、成熟商業支援、高階快取/叢集功能強 | 專有鎖定、學習曲線、授權成本 |
其他值得關注框架
- Castor:開源資料綁定
- Kodo (BEA):JDO/JPA 實作
- Torque (Apache DB):ORM 產生器
- iBatis (MyBatis 前身):SQL 映射導向,支援 Java/.NET
決策建議
依功能需求、擁有/維護成本、非功能需求 (效能、可維護性) 綜合評分。若已採 Spring 生態,Hibernate/JPA 為首選;若全 Oracle 棧且預算充足,TopLink 具整合優勢;若需容器級服務且團隊具 EJB 經驗,Entity EJB 仍是選項。