JDO (Java Data Objects)
優點
- 生命周期狀態機設計正確,其他 ORM 工具應採用或子集化 (如不支持事務)。
PersistenceManager API 管理對象狀態有優勢。
缺點
- 查詢支持不完整,應類似 Hibernate HQL 並用
ResultSet 返回。
- 字段擴展重載方法混亂,應採用 Hibernate/EJB CMP 風格重載。
Hibernate
優點
- 正確的數據模型:POJO 基礎模型是正確方向。
- 可配置性強 (對象關系等)。
- HQL 正是 ORM 查詢語言應有樣子。
- API 完整,
Session 類作為控制流清洗器 (沿用 Connection 模型)。
缺點
- 未使用 JDO 生命周期 (不正確)。
- API (如查詢) 仍有混亂,以
ResultSet 為基礎會更乾淨。
- 作為規範 API 不夠乾淨 (查詢參數存在應用漏洞)。
- 用類名作為表標識非好主意。
EJB CMP (Container Managed Persistence)
優點
- 工廠模式 (Home 接口) 查找實例優於向 Session/Connection 傳參。
ejbSelect 類似優勢。
- 查詢名稱用抽象 Schema 好。
- 理論上某些方案復用性更好。
缺點 (文中重複標題實為缺點)
- CMP 不屬於 EJB 規範核心,非實現持久化合適模型,EJB 3.0 無理由保留 CMP。
Amber (早期 JDO 參考實現/提案)
優點
- 查詢使用 JDBC
ResultSet 和 PreparedStatement,避免自創不完善替代品。ORM 查詢器應以外部 SQL (如 HQL) 為查詢語言,以 ResultSet 為結果、PreparedStatement 處理參數,其他 API 作為子集補充。
缺點
綜合評價
Hibernate 在實用性、API 完整度、社區生態上領先;JDO 理論純正但落地不足;EJB CMP 受限於重型容器架構逐漸邊緣化;Amber 更多是理論探索。現代選型首選 Hibernate/JPA,歷史遷移項目才涉足其餘。