原来还有个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的编程模型,更方便且可插拔。