原來還有個JDO 2.0實現叫做JPOX。而且發現JDO 2.0的接口等定義是由Apache發布的,它是有Sun捐獻的。
JPOX是2003年3月才開始開發的,目前實現支持JDO 1.0和JDO 2.0(JSR-243)規范。
JPOX號稱支持JDOQL和SQL,而且以后也要實現EJB3持久化規范中的JPA(Java Persistence API)。
看來BEA有了Kodo,JBoss有了Hibernate,Oracle和Sun有了融合了TopLink的Glassfish中的EJB3持久化容器后,應該還有其它的廠商可以提供這樣的東西出來。而且似乎JDO 2.0變成真正透明持久化后,從JDO商業實現轉而支持JPA不會很難。本源上說JPA本來就是JDO 2.0風格被Gavin King的Hivernate攪合后出來的規范。
然后發現國內紅工廠的Liberator EJB3也是一個JPA和JDO2兼容的EJB3容器,看來EJB3持久化引擎的實現還是不少的。
看了一篇介紹EJB3 API的講座,是TSS和BeJUG提供的:
http://media.techtarget.com/tss/BeJUG/EJB3/index.html
感覺很不錯,現在聽英文的PPT也比較流暢了。感想就是和Hibernate非常接近,其中EntityManager的概念和session非常相似。annotation的使用是代碼級元數據的最佳實踐。而且發現EJB3吸收了RoR中ActiveRecord的CoC(慣例代替配置)的理念,大部分的影射參數都有默認配置,而且可以通過annotation靈活的覆蓋。所以說,認真學習Hibernate是有用的,Shift to EJB3 Persistence的時候就會比較容易。后面看到persistence.xml是為了在容器外使用EntityManager設計的,對于支持EJB3 Persistence的Java EE容器完全可以直接用EJB3 Persistence模型+元數據編程而不用額外的配置,這的確是非常方便的,提供了透明的持久化模型。而persistence.xml則保證J2SE下面也可以使用代碼管理的EntityManager,帶來可測試和可脫離Java EE Server的編程模型,更方便且可插拔。