程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JDO、EJB CMP、Hibernate和Amber比較

JDO、EJB CMP、Hibernate和Amber比較

編輯:J2EE

JDO、EJB CMP、Hibernate和Amber比較

JDO的優點:
◆JDO的生命周期狀態機(lifecycle state Machine)是正確的用法。任何其它的O/R映射工具都應該使用JDO的生命周期或者它的子集(例如:如果不支持事務)。記住,JDO生命周期是為 JDO實現服務的。大部分用戶不需要了解其中很復雜的內幕。網頁Amber生命周期中有些圖示。
◆PersistentManager API對如何管理JDO對象的狀態有一定的優勢和價值。

JDO的缺點:
◆查詢(query)支持不完全。它應該使用類似Hibernate的HSQL查詢語言,並使用Java.sql.ResultSet作為查詢結果。
◆用於重載方法的字段擴展讓人覺得比較混亂。最好使用類似Hibernate或者EJB/CMP的方法,並重載它們。

Hibernate的優點:
◆有著正確的數據模型。以POJO為基礎的模型是個正確的方向。
◆可配置性(例如對象之間的關系)是個很好的基礎。
◆HSQL正是O/R映射語言應該有的。
◆有著完整的API
◆采用簡明的Session類作為控制流的清洗器,因為它沿用了Connection的模型

Hibernate的缺點:
◆沒有使用JDO生命周期,這是不正確的做法。
◆API(例如查詢)還是有點混亂。It's better than the alternative, but using Java.sql.ResultSet as the foundation would clean it up.
◆API如果作為一個規范的話,還是不夠干淨。例如,在使用查詢參數(query parameters)時,存在一些應用漏洞。
◆我不認為使用類名作為表的標識是件好事。

EJB CMP的優點:
◆采用工廠類(指Home)查找實例比向Session/Connection對象傳遞參數獲取實例要好。
◆ejbSelect跟上面說的類似。
◆查詢名稱使用abstract schma是一個很好的解決方案。
◆理論上來說,這種模式在某些方案中可以有更好的復用性。

EJB CMP的優點:
◆CMP不屬於EJB規范。它並不是個合適的模型去實現這個目的。已經沒有合適的(例如非官方)借口去讓EJB3.0中保留CMP。

Amber優點:
◆使用JDBC ResultSet和PreparedStatement做查詢

出於某些原因,O/R映射工具通常拋棄強大的ResultSet和PreparedStatement API,而創建自己一套並不是很合適的替代品。O/R查詢器應該使用一個外部的SQL(例如HSQL)作為查詢語言,並使用ResultSet作為結果集,使用PreparedStatement處理查詢參數。可以增加其它的API作為查詢子集,就像查詢一個單獨的實體,但應該使用ResultSet和 PreparedStatement作為基礎。

Amber缺點:
◆Amber的研究價值遠大於它的使用價值

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved