36

为将在 Google AppEngine 上运行的 Grails 应用程序选择 JDO 或 JPA 的优缺点

4

4 回答 4

42

明白你为什么会选择 JDO。不知道其他海报提到的“默认”是什么。JDO 与数据存储无关。JPA 不是。JDO 允许获取组。JPA 没有。JDO 允许数据存储标识。JPA 没有。JDO 允许数据存储事务。JPA 没有。所有这些都是公共记录 http://db.apache.org/jdo/jdo_v_jpa.html

JDO 和 JPA 没有填补相同的问题空间。它们仅对 RDBMS 重叠。JPA 仅针对 RDBMS 设计。JPA 并不简单,正如 http://db.apache.org/jdo/jdo_v_jpa_api.html上的 API 比较所证明的那样

——安迪(DataNucleus)

于 2009-06-15T19:13:49.350 回答
7

如果您正在为 AppEngine 构建,那么如果您使用 JDO,那么道路会更短,并且打嗝也更少。否则,您将在 JDO 引擎周围有一个 JPA 层。

于 2009-10-07T16:35:06.950 回答
3

顺便说一句,Grails 的数据持久性建立在 Hibernate 之上。您认为 JDO 会如何帮助您解决 Hibernate 无法解决的问题?我不明白为什么人们会选择 JDO 而不是默认值。

就 JPA 而言,我建议您使用 JPA,即 Grails 附带的 JPA 的 Hibernate 实现,而不是任何 Hibernate 特定功能,除非另有说明。

[在问题发生重大变化后不再相关]

在您的实体本身中进行 CRUD 操作非常好。但是在某些情况下,您可能会发现自己在多个实体上进行操作,在这种情况下,层会变得方便且干净,恕我直言。再次,它的需求问题。

于 2009-06-15T06:03:50.110 回答
2

[在问题发生重大变化后不再相关]

看看以下文章:

http://www.infoq.com/news/2007/09/jpa-dao

听起来这真的取决于您的应用程序的性质和它的大小。JPA 更简单,所以我会坚持使用它并尽量避免在您的应用程序中使用 DAO 层,前提是它是一个相当小且简单的应用程序。

于 2009-06-15T06:07:51.223 回答