想在 Google App Engine 上开发我的项目。我想使用 google 大表作为数据库。对于数据库,我有两个选项 JPA 和 JDO。你们会建议我吗?两者对我来说都是新的,我需要学习它们。所以我会在你回复后专注于一个。
5 回答
由于您使用的是 Data Nucleus,请参阅他们关于 JDO 与 JPA 的常见问题解答。 http://www.datanucleus.org/products/accessplatform_3_0/jdo_jpa_faq.html
DataNucleus AccessPlatform 支持 Java 持久性的 JDO 和 JPA 规范。因此,它对这两种技术都没有“既得利益”,认为用户可以选择他们最喜欢的技术。网络上有很多关于 JDO 和 JPA 的 FUD,主要由 RDBMS 供应商实施。此常见问题解答纠正了其中许多问题
一个关键的区别是 JDO 支持丰富的域模型(逻辑和数据),事实上所有的持久类都可以引用当前的 PersistenceManager,发出查询,而且,我猜,默认情况下可能没有持久的字段。
JPA 不支持这样的软件设计。事实上,每个实体都没有对 PersistenceManager 的引用,要拥有它,您必须求助于 ThreadLocal 变量,这不是一个非常优雅和强大的解决方案。
由于 GAE BigTable 不是 RDBMS,因此 JDO 是更好的选择。Aphache JDO中有一些详细的比较文章,对我有帮助。
JPA 通过 ORM 将 java 对象持久化为关系数据,而 JDO 是 java 对象持久性的更通用规范。因此,使用 JDO 将为您的对象的存储实现选项提供更多自由。
JPA 是领先的持久性 Java 标准。因此,如果您使用 RDBMS 并且需要 ORM,我会说使用 JPA。
Hibernate 通常用作 JPA 实现。如果您需要一些额外的功能,您可以使用休眠特定的注释。
这个问题看起来已经在这里讨论了JDO vs JPA for Java on Google App Engine