Буферы протокола с JPA

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

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

Я ищу:

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

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

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


person Yrlec    schedule 18.07.2009    source источник
comment
Я бы тоже хотел такого. В частности, возможность генерировать .proto файлы из класса JPA на основе его аннотаций. Другие функции (создание сущностей JPA из файлов .proto, автоматическое преобразование из одного в другой) менее важны. Одним из вариантов является использование решения XML / XSLT, но оно по-прежнему включает два артефакта разработки, которые необходимо поддерживать параллельно. Мне нужно решение, которое способно построить обе вещи, используя только один артефакт разработки.   -  person aroth    schedule 27.06.2011


Ответы (1)


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

  1. Создает файл .proto
  2. Создает XML-файл сопоставления сущностей JPA.

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

person Dave    schedule 08.12.2009