Netflix DGS с JPA

Я играл с DGS фреймворка Netflix GraphQL . Используя плагин codegen, я могу генерировать классы моей модели прямо из схемы.

Мой вопрос в том, как мне добавить устойчивости к этим сгенерированным классам. Могу ли я просто добавить аннотации к сгенерированным классам, и в этом случае они не будут удалены, если класс будет регенерирован? Или мне создать другой набор классов для JPA и сопоставить эти два набора классов?

1 ответ

Первый вопрос, который вы должны задать себе, - действительно ли модель JPA является тем, что вы хотите предоставить через свой GraphQL API. Для простых случаев использования это может быть нормально, но часто бывает лучше разделить две модели.

В зависимости от того, как вы ответите на поставленный выше вопрос, есть три варианта:

  1. Модели GraphQL и JPA следует разделять; это означает, что вам нужно сопоставить классы в коде. (Есть несколько библиотек, которые потенциально могут помочь).

  2. Модель JPA - это действительно то, что вы хотите представить в своем API. Вручную создайте классы JPA и используйте их в сборщиках данных. Не беспокойтесь об использовании кодогенератора из схемы, поскольку ваша база данных теперь является вашей моделью.

  3. В качестве ярлыка для перехода ко второму варианту, описанному выше, вы можете выполнить одноразовое создание, скопировать сгенерированный код в исходные каталоги и вручную управлять классами оттуда.

Хотя это немного больше работы, я обычно рекомендую вариант 1.

Другие вопросы по тегам