Как стать автором
Обновить

Комментарии 12

Чтобы не писать портянки такого ужасного кода по перекладыванию Entity в Dto, посмотрите не проект
Mapstruct
Это не единственный вариант. Но мне больше нравится тем, что не в рантайме все это мапит, а через кодогенерацию.
Благодарю за полезные ссылки. Обязательно поизучаю Mapstruct и Lombok. С другой стороны, любая задача имеет несколько решений. Вот доказательств теоремы Пифагора более двадцати, но не говорят, что это доказательство неверно, потому, что его не изучают в школьной программе.
Не путайте доказательства с, извините, говнокодом)
У вас дто напрямую связано с сущностями. Это смешение слоев приложения, что является плохой практикой и на любом нормальном ревью кода его завернут сразу.
А аннотация @JsonIgnore вашу задачу не решает более изящно?
Аннотация @JsonIgnore действительно спасает от зацикливания. Но и значения поля, которое она аннотирует, не передаются в rest ответе. А они нам как раз и нужны.
Та магия, которой вы восхищаетесь, заложена в Spring Data. Spring Boot — всего лишь следствие. Ну и помимо MapStruct (как выше советуют), можно использовать и Lombok
Зачем в пипл репозитории два метода которые делают одно и то же, и на первый к тому же повешена аннотация которая делает в точности то что описывает название метода (то есть спринг дата сам справится с квери)?

Суть дто не в том чтобы это был микросервис который перегонит юзеров из сущностей в объекты, а в том что хранить уже перегнанные данные, то есть метод который называется get… и принимает список пиплов это минимально дичь, то есть вы создаёте объект чтобы создать ещё объектов, в таком случае лучше было бы сделать фабрику или статический метод

Думаю тот кто будет использовать ваш код просто офигеет когда метод начинающийся на get потребует внутрь что либо, и вернёт список объектов своего же типа
Да, действительно два метода выполняют одинаковое действие, но выполнены по-разному. Скажем так, я тренировался. Повторенье мать ученья.
Аннотация ManyToMany к Spring Boot вообще никого отношения не имеет. К JPA да, хибернейту да, к другим ORMмкам может быть. Но Spring Boot это совсем о другом.
Мне кажется (я точно ловил), что будет NullPointerException при получении списка песен
people.getSongItems()

Т.к. гибернейт успевает закрыть транзакцию после чтения списка people-ов, и EAGER поля остаются невычитанными из БД. Соответственно, весь метод преобразования Entity в DTO с чтением EAGER полей нужно оборачивать в @Transactional аннотацию.
А это ценное замечание. Добавил @Transactional. Правда, у меня NullPointerException не появлялся что тогда, что сейчас. Но зато реже стала появляться ошибка с неправильным ключем при апдейте альбома. Сейчас прогоняю в цикле 3 раза, хотя у меня альбомов 6.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории