Разрабатываю Rest Api на Spring . Проект растет в размерах. И начинают возникать вопросы. Раньше entity использовались для работы с бд и JSON.
Но теперь там куча аннотаций @JsonIgnore, @Transiet и т.д. Возникла мысль разделить это все по разным сущностям. Но теперь будет куча схожих, между собой классов. Например Entity User
, с полями: id
, name
, login
, password
, role
., UserResponse
для формирования JSON с полями: id
, name
, role
. Как лучше всего это сделать? Использовать DTO или разделить на модули. Модуль для работы с бд. Модуль внешних интерфейсов(JSON). Модуль для бизнес логики и т.д
По сути Ваш JSON в REST - это View.
Ограничьтесь получением нужных данных из БД, а уже на слое View проводите трансформацию.
Схожие классы это нормально, так и должно быть в части DDD (разложение по контекстам), каждый класс отвечает за свою обязанность и изменение одного класса не затронет другой, как к примеру с аннотацией @JsonIgnore.
По-хорошему, объект из БД тоже убрать как Domain object, а выделить свой объект и наполнять его из объекта БД.
На данный момент У Вас с изменениями появится 2 объекта JsonUser и DbUser. JsonUser - это View, DbUser - персистентный объект для хранения в БД. Можно сделать еще один объект User, который будет Вашей моделью, так сказать смысловым объектом ядра приложения.
Как с ним работать:
Получаете DbUser и инстанцируете из него User.
Важно! Вы сами отвечаете за то как строится объект User, а не JPA. К примеру, если User будет иметь данные получаемые из сокета или URL, можно смело добавить этот функционал, а не добавлять в объект DbUser это поле и аннотацию игнорирования.
Таким образом Ваш объект User ни как не зависит от используемого Вами фрэймворка JPA.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Поставил последнюю версию драйвера для Postgesql, больше ничего не ставилПодключаю:
Здравствуйте, не могу понять причину, почему форма быстрой покупки не срабатывает, с другим товаром