2017-08-13 309 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只要消息是存儲在數據庫中的唯一對象,您就對了。 –