2009-12-10 68 views
12

我一直在使用Hibernate ORM,它是JPA规范的实现来管理关系数据。我也听说过应该这样做的JDO规范(管理关系数据)。JPA和JDO规范有什么区别?

这两者之间的根本区别是什么?任何代码样本最受赞赏。 JDO如何与其他Java技术栈集成在一起EJB3

+0

相关:http://stackoverflow.com/questions/530215/hibernate-vs-jpa-vs-jdo-pros-and-cons-of-each – 2009-12-10 05:56:42

+0

@matt - 从你的问题我没有看到任何答案这给了差异。您询问了优点和缺点,在了解了两种规格之间的差异之后,我打算评估这些优点和缺点。 – n002213f 2009-12-10 06:10:53

回答

11

尝试这些 JDO-JPA FAQJDO or JPAJDO .v. JPAJDO .v. JPA - APIJDO .v. JPA - ORM

JDO早已存在JPA之前,并具有更广的范围。 JPA仅用于RDBMS,并且(即使在JPA2中)也不提供JDO提供的全面支持。这个论坛中的链接和其他帖子应该提供充足的阅读材料来解释论证的各个方面。

--Andy(DataNucleus

+0

关于如何将JDO与其他堆栈集成的指针EJB3 – n002213f 2009-12-10 06:51:47

+0

JDO实现(例如DataNucleus)带有JCA适配器,所以它的微不足道的 – DataNucleus 2009-12-10 07:41:44

+0

伟大的答案,但仅供参考,前两个链接已经死了。 – 2012-03-18 13:58:00

2

JPA被定义为统一和替换EJB CMP和JDO的前现有的Java持久性规范。 JPA作为EJB 3.0的一部分发布,是Oracle WebLogic,IBM Websphere,Redhat JBoss和任何其他Java EE提供商支持的Java EE规范的一部分。有许多支持JPA(TopLink/EclipseLink,Hibernate,OpenJPA,DataNucleus)的领先产品,但很少有支持JDO或CMP的产品。所以,JPA似乎在替换两者方面做得很好。

至于JPA只是RDBMS,那完全是假的(甚至DataNucleus是我知道的唯一剩余的JDO产品,它支持JPA在它支持JDO的任何非关系平台上)。还有很多其他产品在非关系平台上支持JPA,例如EclipseLink的NoSQL和EIS支持(MongoDB,Oracle NoSQL,XML,传统数据库),Kundera,DataNucleus,甚至支持JPA的ObjectDB等对象数据库作为他们的Java API。

+2

GAE似乎是一个关键的JDO支持平台。我不知道DataNucleus有多独特,但我在这里看到过这些问题...... – 2012-03-19 15:58:17

+1

JPA专家组有多少非RDBMS数据存储供应商的代表?这将表示它是如何适合非RDBMS数据存储“设计”的。 – user383680 2012-03-19 16:25:56

+1

这些其他数据存储区不使用JDBC,但JPA以此为导向,没有真正的方法通过标准的JPA方式提供对数据存储区的访问; DataNucleus似乎通过jdbc.url破解它。因此,不,我不明白“JPA”如何迎合其他数据存储的要求。 DataNucleus是否应该为他们提供JPA也值得商榷。 – 2012-03-19 17:05:25