2011-05-16 224 views
2

我们正在构建一个Android应用程序,该应用程序通过Protocol Buffers与Java App Engine Server进行通信。我们使用JDO作为服务器上的持久机制。在App Engine上使用JDO支持Protocol Buffer Model

我的问题是如何在App Engine数据库中保留对象。看起来唯一的方法是为每个模型创建两个类:一个是从.proto文件生成的模型,另一个是封装第一个类并提供JDO注释,附加方法等的类。这看起来相当麻烦对我而言,我想知道关于这方面的最佳做法可能是什么。有没有办法避免这种重复(例如,JPA允许在外部XML文件中指定持久性注释,但是由于文档较差,我们宁愿避免App Engine上的JPA)?

回答

0

App Engine的数据存储只存储模型协议缓冲区。如果您的客户端发送给您的协议缓冲区是PB模型,则可以将其直接存储到低级API中来存储它。如果是任何其他类型的PB,则需要将其手动转换为实体,或者需要对其进行序列化并将其存储在实体的二进制属性中。您选择哪一种取决于您需要如何查询存储的对象。不管怎样,JDO可能是一个糟糕的选择 - 你应该看看Objectify,或者直接使用底层API。

+0

“模型协议缓冲区”是什么意思?这是App Engine内部使用的protobuf类型吗?如果是这样,它暴露在任何地方?我实际上使用了objectify,但它也不支持protobufs。 (您必须手动序列化/反序列化或转换为Objectify可嵌入的类。) – aij 2014-06-04 00:09:45