在谷歌应用引擎中使用低级api进行数据存储?这不好吗?

Che*_*hez 5 java google-app-engine google-cloud-datastore

关于如何在数据存储中使用低级api的文档很少,而且在JPA和JDO上有很多文档以及它如何转换为它.

我的问题是:对JPA或JDO规范进行编码是否有任何优势,而不是直接访问数据存储区的低级api?

从最初看起来,它似乎简单直接,但我不确定是否有充分的理由不去做.

谢谢Cx

Thi*_*ilo 5

您不应该直接使用低级API.框架开发人员可以在其上创建高级库.文档针对的是那些人(基本上只有JavaDoc).

谷歌正式支持JDO和JPO框架(它们是Java标准,但不一定非常适合非关系数据存储(*)),但有一些替代方案"更接近金属",承诺是更容易理解,更轻盈,更快捷.

物化,树枝,SimpleDS,而且这个问题.

功能方面,替代库提供了一些东西.例如,对底层数据存储实体的访问为您提供了二进制表示,您可以在没有可序列化的类的情况下进行memcache.您可以通过索引进行细粒度访问(可以执行部分​​索引),并且Twig还​​为您提供异步查询,这可能很有用.

(*)对JDO/JPA也有一点反对,因为它有助于几秒钟的启动时间,这在App Engine上很重要,因为谷歌在几分钟不活动后关闭你的JVM,以及下一个用户等待十秒钟或更长时间.但是,我认为这是一个根本上有缺陷的论点,因为当你使用Java时,你想要使用像JDO或Spring这样的框架.谷歌甚至做广告.如果这些框架(尤其是Google本身认可的框架)无法在App Engine上合理使用,那么Google需要解决这个问题,而不是框架作者.


Pet*_*ore 2

直接使用底层API并没有什么问题。如果您想要更高级别的东西,您应该尝试 Thilo 提到的一些替代方案。使用更高级别 API 的优势并不总是适用于每个开发人员。例如,使用 JDO/JPA 对于已经了解其中之一或已经拥有使用它们的代码的人来说是有意义的。但对于新开发人员来说,学习 JDO/JPA 可能比仅仅使用本机 API 更困难。