想在Google App Engine上开发我的项目。我想使用google big table作为数据库。对于数据库,我有两个选项JPA和JDO。请问各位建议我吗?两者对我来说都是新的,我需要学习它们。所以我会在回复后专注于一个。
答案 0 :(得分:10)
由于您正在使用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供应商实施。这个常见问题纠正了许多这些要点
答案 1 :(得分:3)
一个关键的区别是JDO支持一个丰富的域模型(逻辑与数据一起),实际上所有持久化的类都可以引用当前的PersistenceManager,发出查询,而且我想,它可能不会持久化字段默认情况下。
JPA不支持此类软件设计。事实上,每个实体都没有对PersistenceManager的引用,因此必须使用ThreadLocal变量,这不是一个非常优雅和强大的解决方案。
答案 2 :(得分:3)
由于GAE BigTable不是RDBMS,因此JDO是更好的选择。 Aphache JDO中有一些详细的比较文章,对我有帮助。
答案 3 :(得分:1)
JPA是持久性的领先java标准。因此,如果您使用的是RDBMS并需要ORM,我会说使用JPA。
Hibernate通常用作JPA实现。如果您需要一些额外的功能,可以使用特定于hibernate的注释。
答案 4 :(得分:1)
JPA通过ORM将java对象持久化为关系数据,而JDO是java对象持久性的更通用规范。因此,使用JDO将为您的对象提供更多的存储实现选项。