Netflix DGS с JPA
Я играл с DGS фреймворка Netflix GraphQL . Используя плагин codegen, я могу генерировать классы моей модели прямо из схемы.
Мой вопрос в том, как мне добавить устойчивости к этим сгенерированным классам. Могу ли я просто добавить аннотации к сгенерированным классам, и в этом случае они не будут удалены, если класс будет регенерирован? Или мне создать другой набор классов для JPA и сопоставить эти два набора классов?
1 ответ
Первый вопрос, который вы должны задать себе, - действительно ли модель JPA является тем, что вы хотите предоставить через свой GraphQL API. Для простых случаев использования это может быть нормально, но часто бывает лучше разделить две модели.
В зависимости от того, как вы ответите на поставленный выше вопрос, есть три варианта:
Модели GraphQL и JPA следует разделять; это означает, что вам нужно сопоставить классы в коде. (Есть несколько библиотек, которые потенциально могут помочь).
Модель JPA - это действительно то, что вы хотите представить в своем API. Вручную создайте классы JPA и используйте их в сборщиках данных. Не беспокойтесь об использовании кодогенератора из схемы, поскольку ваша база данных теперь является вашей моделью.
В качестве ярлыка для перехода ко второму варианту, описанному выше, вы можете выполнить одноразовое создание, скопировать сгенерированный код в исходные каталоги и вручную управлять классами оттуда.
Хотя это немного больше работы, я обычно рекомендую вариант 1.