Java AppEngine:JDO或JPA,如何select?

为在Google AppEngine上运行的Grails应用程序selectJDO或JPA的优点和缺点

我明白为什么你会selectJDO。 不知道其他海报引用的“默认”是什么。 JDO是数据存储不可知的。 JPA不是。 JDO允许获取组。 JPA没有。 JDO允许数据存储标识。 JPA没有。 JDO允许数据存储事务。 JPA没有。 所有这些都是公共logginghttp://db.apache.org/jdo/jdo_v_jpa.html

JDO和JPA不能填充相同的问题空间。 它们仅与RDBMS重叠。 JPA仅为RDBMS.JPAdevise,并不简单,如http://db.apache.org/jdo/jdo_v_jpa_api.html上的API比较所certificate的那样;

– 安迪(DataNucleus)

如果您正在为AppEngine构build,则使用JDO的道路会更短,并且打嗝的次数会更less。 否则,你的JDO引擎将会有一个JPA层。

顺便说一句,Grails的数据持久性build立在Hibernate之上。 你如何看待JDO能够帮助你做什么? 我不明白为什么要select默认的JDO。

就JPA而言,我build议你使用JPA,Hibernate实现JPA,这个方法适用于Grails,而不是Hibernate特有的特性,除非另有说明。

[在重大变更之后没有更多的相关性]

在您的实体本身中进行CRUD操作是完全正确的。 但是有些情况下,你可能会发现自己在多个实体上操作,在这种情况下,一个层来得心应手,干净,恕我直言。 再次,它的要求的事情。

[在重大变更之后不再相关]

看看下面的文章:

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

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