2017-08-13 53 views
4

保持使用protobuf3定义的数据的正确方法是什么?我正在使用golang和Java,这两个地方都支持ORM。在与Hibernate和Golang与GORM的Java。这两个地方我需要将生成的代码转换为相应的实体模型。为了ORM可以理解,我觉得更加痛苦的是保持相同的对象结构。是否有任何数据库,我可以使用protobuf对象原样。或者我可以定义protobuf本身中的对象之间的关系。将Protobuf消息持久保存到数据库

任何帮助真的很感激。

回答

1

根据定义,您的ORM正在处理对象。它不应该知道或关心网络上的序列化。我建议将protobuf消息反序列化为您的ORM习惯使用的对象,并让它持久化。将持久层与网络协议耦合没有什么好的理由。

如果您摆脱了JPA并使用基于文档的解决方案,那么直接存储protobuf序列化可能是有意义的。

您必须决定JPA为您提供多少价值。

1

这个问题有一个非直接的解决方案。

Protobuf 3为消息标准化JSON mapping。将消息序列化为JSON后,可以有多种选项将其存储在数据库中。

下(还有更多)的数据库可以存储JSON数据:

  • MariaDB的
  • PostgreSQL的
  • MongoDB的
+1

没有理由,如果你在这个方向去使用ORM 。正如您已经指出的那样,这对于NoSQL文档持久性技术来说是非常完美的,但对于使用Java对象的JPA持久性来说完全没有意义。 – duffymo

+0

@duffymo只要消息是存储在数据库中的唯一对象,您就对了。 –