2010-02-12 66 views
14

想要在Google App Engine上开发我的项目。我想使用谷歌大表作为数据库。对于数据库我有两个选项JPA和JDO。请你们建议我吗?两者对我来说都是新的,我需要学习它们。所以我会在回复之后专注于一个。JPA和JDO之间的区别?

回答

9

讨论。 http://www.datanucleus.org/products/accessplatform_2_1/jdo_jpa_faq.html

DataNucleus AccessPlatform支持Java持久性的JDO和JPA规范。因此,这两种技术都没有“既得利益”,相信用户可以选择他们最喜欢的产品。网络上有很多关于JDO和JPA的FUD,主要由RDBMS供应商实施。本FAQ更正许多这些点

+0

链接再次死机。 – 2018-02-03 12:20:01

0

JPA是持久性的领先java标准。所以我会说如果您使用RDBMS并需要ORM,请使用JPA。
Hibernate通常用作JPA实现。如果你需要一些额外的功能,你可以使用hibernate特定的注释。

这个问题看起来已经由于您使用的数据核,看到他们对JDO VS JPA的常见问题,在这里JDO vs JPA for Java on Google App Engine

+0

但我想使用谷歌数据存储(大表)使用数据核心。我按照JPA或JDO – user246160 2010-02-12 05:37:27

+2

Hibernate可能“通常用作JPA实现”,但它只适用于RDBMS,因此将无法工作GAE/J。根据GAE/J的文档,JDO与该数据存储非常接近,但如果持久性模型简单并且查询需求也很简单,那么JPA同样可以使用。使用JDO或JPA,用户需要使用DataNucleus – DataNucleus 2010-02-12 10:13:27

2

的一个重要区别是,JDO(合逻辑和数据),支持丰富的域模型,其实所有的持久对象可以有一个参考当前的PersistenceManager,发出查询,并且,我想,可能没有默认的字段持久性。

JPA不支持此类软件设计。实际上,每个实体都没有对PersistenceManager的引用,为了使它不得不求助于ThreadLocal变量,这不是一个非常优雅和强大的解决方案。

2

因为GAE BigTable不是RDBMS,所以JDO是更好的选择。在Aphache JDO有一些详细的比较文章,这对我很有帮助。

1

JPA通过ORM持久化java对象到关系数据,而JDO是java对象持久化的更一般的规范。因此,使用JDO将为您的对象提供更多的存储实现选项自由。