访问GAE数据存储区:使用JDO,JPA还是低级API?

Ton*_*ony 4 google-app-engine google-cloud-datastore

有关如何最佳访问Google App Engine数据存储区的任何建议?通过JDO,JPA或本机API?

JDO/JPA的明显优势是可移植到其他数据库引擎,但除此之外,有什么理由不直接使用数据存储区API?

tem*_*mpy 7

我对JPA知之甚少,但是我选择了JDO,如果你是新手,我可以说它有一个相当陡峭的学习曲线和许多不适用于GAE的无关的东西.您所获得的是拥有的关系,它允许您拥有彼此实际引用的类,而不仅仅是数据存储区ID.JDO还通过注释做了一些有用的事情,例如@Element(dependent ="true")注释,它可以节省你很多工作,因为它允许你删除父对象,JDO将删除它的所有子对象.一般来说,GAE文档错过了很多有效使用JDO所需要知道的事情,所以我认为阅读datanucleus文档至关重要,并特别注意获取组.

您还可以找到JDO和JPA的大量简洁示例,这些示例几乎可以解决所有可能的情况.

最后,我会看看Objectify和Twig,两个显然很受欢迎的替代框架,我在问到这个问题的时候提到了一个问题.

另外,至于其他数据库的可移植性,我认为担心GAE的可移植性有点误导.尽管谷歌希望我们认为GAE代码是可移植的,但我认为这是一个梦想.您将最终编码以针对Google提供的特定API组合,您可能在其他任何地方都看不到它们,以及围绕GAE的许多限制和特性进行编码,因此我会忘记将可移植性作为解决问题的因素数据访问API.事实上,如果我可以重新决定这个问题,我想我会使用专门为GAE构建的数据访问框架,例如objectify.


Jas*_*all 6

低级数据存储API不是为直接使用而设计的,而是为其他框架提供API以与数据存储进行交互.

此程序包包含数据存储区的低级API,主要用于框架作者.应用程序作者应考虑使用提供的JDO或JPA接口来访问数据存储区.

(来源)

一个这样的框架是Objectify,一个比JDO或JPA更简单的数据存储区接口,以及一个仅考虑数据存储区的框架.