Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在appengine上使用JDO持久化协议缓冲区模型_Java_Google App Engine_Jdo_Protocol Buffers - Fatal编程技术网

Java 在appengine上使用JDO持久化协议缓冲区模型

Java 在appengine上使用JDO持久化协议缓冲区模型,java,google-app-engine,jdo,protocol-buffers,Java,Google App Engine,Jdo,Protocol Buffers,我们正在构建一个Android应用程序,它通过协议缓冲区与Java应用程序引擎服务器进行通信。我们使用JDO作为服务器上的持久性机制 我的问题是如何在appengine数据库中持久化对象。似乎唯一的方法是为每个模型创建两个类:一个是从.proto文件生成的模型,另一个是封装第一个类并提供JDO注释、其他方法等的类。这对我来说似乎相当麻烦,我想知道关于这一点的最佳实践是什么。有没有办法避免这种重复?例如,JPA允许在外部XML文件中指定持久性注释,但我们宁愿在App Engine上避免JPA,因为

我们正在构建一个Android应用程序,它通过协议缓冲区与Java应用程序引擎服务器进行通信。我们使用JDO作为服务器上的持久性机制


我的问题是如何在appengine数据库中持久化对象。似乎唯一的方法是为每个模型创建两个类:一个是从.proto文件生成的模型,另一个是封装第一个类并提供JDO注释、其他方法等的类。这对我来说似乎相当麻烦,我想知道关于这一点的最佳实践是什么。有没有办法避免这种重复?例如,JPA允许在外部XML文件中指定持久性注释,但我们宁愿在App Engine上避免JPA,因为文档质量差?

App Engine的数据存储只存储模型协议缓冲区。如果客户端发送给您的协议缓冲区是一个PB模型,那么您可以通过将其插入低级API来直接存储它。如果它是任何其他类型的PB,则需要手动将其转换为实体,或者需要将其序列化并存储在实体的二进制属性中。您选择哪一个取决于您需要如何查询存储的对象


无论哪种方式,JDO都可能是一个糟糕的选择-您应该研究Objectify,或者直接使用低级API。

App Engine的数据存储只存储模型协议缓冲区。如果客户端发送给您的协议缓冲区是一个PB模型,那么您可以通过将其插入低级API来直接存储它。如果它是任何其他类型的PB,则需要手动将其转换为实体,或者需要将其序列化并存储在实体的二进制属性中。您选择哪一个取决于您需要如何查询存储的对象


无论哪种方式,JDO都可能是一个糟糕的选择-您应该研究Objectify,或者直接使用低级API。

您所说的模型协议缓冲区是什么意思?这是appengine内部使用的protobuf类型吗?如果是,它是否暴露在任何地方?我实际上在使用objectify,但它也不支持protobufs。您必须手动序列化/反序列化或转换为对象化可以嵌入的类。您所说的模型协议缓冲区是什么意思?这是appengine内部使用的protobuf类型吗?如果是,它是否暴露在任何地方?我实际上在使用objectify,但它也不支持protobufs。您必须手动序列化/反序列化或转换为Objectify可以嵌入的类。