JPA和JDO规范有什么区别?

12

我一直在使用Hibernate ORM,它是JPA规范的实现,用于管理关系型数据。我也听说过JDO规范,它也可以做同样的事情(管理关系型数据)。

这两者之间有什么根本区别?非常感谢任何代码示例。JDO如何与其他Java技术栈集成,例如EJB3


相关内容:https://dev59.com/5nRB5IYBdhLWcg3wvpic - matt b
@matt - 从你的问题中我没有看到任何给出区别的答案。你问了优缺点,我会在了解这两个规范之间的区别后进行评估。 - n002213f
2个回答

11

有没有关于如何将JDO与其他堆栈(例如EJB3)集成的指针? - n002213f
JDO实现(例如DataNucleus)附带有JCA适配器,因此这很简单。 - DataNucleus
很好的回答,但是请注意,前两个链接已经失效了。 - dB'
他们三年前回答时并不是这样。但是现在你可以很容易地用“accessplatform_3_0”替换URL中的“accessplatform_2_0”,现在已经更新,谢谢。 - DataNucleus

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只能是关系型数据库,那是完全错误的(即使DataNucleus,我所知道的仅剩的JDO产品,在任何它支持JDO的非关系平台上也支持JPA)。
还有许多其他产品支持在非关系平台上使用JPA,例如EclipseLink的NoSQL和EIS支持(MongoDB,Oracle NoSQL,XML,旧版数据库),Kundera,DataNucleus,甚至像ObjectDB这样支持JPA作为其Java API的对象数据库。

2
GAE似乎是一个关键的JDO支持平台。我不知道这与DataNucleus有多大区别,但我在这里看到了一些问题... - Donal Fellows
1
JPA专家组中有多少非关系型数据库供应商的代表?这将代表它是否适合为非关系型数据库进行“设计”。 - user383680
1
这些其他的数据存储不使用JDBC,然而JPA是以它为导向的,没有真正的方法通过标准的JPA手段提供对数据存储的访问;DataNucleus似乎通过jdbc.url来破解它。因此,我不认为“JPA”能够像你所说的那样适用于其他数据存储。至于DataNucleus是否应该在它们上面提供JPA也是有争议的。 - Neil Stockton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接