我想在Google App Engine上开发我的项目。我想使用Google Bigtable作为数据库。对于数据库,我有两个选项:JPA和JDO。你们能给我提供建议吗?两者对我来说都很新,我需要学习它们。所以在听取你们的回复后,我会专注于其中一个。
由于您正在使用Data Nucleus,因此请参阅他们关于JDO和JPA的常见问题解答。 http://www.datanucleus.org/products/accessplatform_3_0/jdo_jpa_faq.html
DataNucleus AccessPlatform支持Java持久化的JDO和JPA规范。因此,它对这两项技术没有“利益关系”,认为用户可以选择最喜欢的那个。在网络上出现了很多关于JDO和JPA的FUD,这主要是由关系型数据库厂商散布的。本FAQ纠正了其中许多观点。
一个关键的区别是,JDO支持丰富的领域模型(将逻辑与数据结合在一起)。实际上,所有持久化类都可以引用当前的PersistenceManager,发出查询,并且可能默认情况下不需要将字段持久化。
JPA不支持这样的软件设计。实际上,每个实体都没有对PersistenceManager的引用,要想拥有它,必须使用ThreadLocal变量,这并不是一种非常优雅和健壮的解决方案。
JPA通过ORM将Java对象持久化到关系数据中,而JDO是用于Java对象持久化的更为通用的规范。因此,使用JDO将为您的对象提供更多的存储实现选项。
这个问题似乎已经在这里JDO vs JPA for Java on Google App Engine讨论过了。