Как получить байт [] из буфера протокола сериализованных данных для записи в базу данных? - PullRequest
2 голосов
/ 04 марта 2011

Я пытаюсь использовать буферы протокола для хранения сериализованных данных в базе данных для веб-приложения, встроенного в Java.

Я создал файлы .proto и скомпилировал их, чтобы получить сгенерированные классы. Также я могу создавать объекты сообщений, используя метод setters и finally build (). Но чтобы сохранить его в базе данных, мне нужны сериализованные данные в виде байтов [] или байтовых буферов. Как я наконец получу это из экземпляров сообщения ??

    import com.paratha.serializers.protocolbuffers.CommentProto.Comment;

    Comment.Builder comment=Comment.newBuilder();
    comment.setCommentBody("This is the first comment!").setUserId(32433).build();  

Как получить отсюда сериализованные данные для записи в базу данных?

1 Ответ

6 голосов
/ 04 марта 2011

Google сделали это очень просто :):

MyProtocolBufferObject myObject = MyProtocolBufferObject.newBuilder().setName("bob").build();
byte[] bytes = myObject.toByteArray();

Редактировать С вашим примером:

Comment.Builder commentBuilder=Comment.newBuilder();
Comment comment = commentBuilder.setCommentBody("This is the first comment!").setUserId(32433).build();
byte[] bytes = comment.toByteArray();

Обратите внимание: при вызове метода newBuilder() вы получаете экземпляр Comment.Builder, , а не экземпляр Comment. Только когда вы вызываете метод Comment.Builder build(), вы получаете экземпляр Comment.

...