2009-07-18 6 views
6

В настоящее время я создаю P2P-систему, которая использует протокольные буферы для всех сообщений между одноранговыми узлами. Также есть некоторые централизованные части системы, в которых одноранговые узлы взаимодействуют с сервером. Сервер использует JPA для хранения данных, которые он имеет о сверстниках.Буферы протокола с JPA

Так что, по сути, клиенты имеют свои данные в протоколах-буферах-сообщениях и сервере в JPA-сущностях. Поэтому мой вопрос заключается в том, есть ли способ автоматического преобразования между ними?

Что я ищу это:

  • Генератор JPA-сущностей из .protos-файлов ИЛИ
  • генератора .protos-файлов из JPA-сущностей И
  • каким-то образом для автоматического преобразования между ними во время выполнения, поэтому я не создаю код для этого вручную для каждого нового класса.

В идеале вы могли бы сделать это на один шаг дальше и иметь оба они одинаковые классы (т. Е. Протокольные буферы с аннотациями JPA), но если это невозможно, вышеуказанное будет работать.

Выполнено ли это, и если вы считаете, что это невозможно реализовать в разумные сроки?

+0

Я тоже хотел бы этого. В частности, возможность генерации '.proto' файлов из класса JPA на основе его аннотаций. Другие функции (генерирующие объекты JPA из файлов .proto, автоматически преобразующиеся из одного в другое) менее критичны. Использование решения XML/XSLT является одним из вариантов, но оно по-прежнему связано с двумя артефактами разработки, которые необходимо поддерживать параллельно. Я хочу решение, способное строить обе вещи, используя только один артефакт развития. – aroth

ответ

1

API буферов Java-протоколов хочет генерировать классы. Поэтому кажется, что было бы сложно их комментировать. Вместо этого, вы можете начать с вашей собственной XML «схемой», а затем XSLT таблицы стилей, которые:

  1. создает .proto файл
  2. Создает JPA отображение объекта XML-файл.

Затем вы можете использовать созданные Google файлы с JPA.