首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JDO、EJB CMP、Hibernate、Amber 四大 ORM 框架優劣對比

     編輯:J2EE

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,歷史遷移項目才涉足其餘。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved