Size: a a a

2020 November 06

D

Dima in pro.jvm
Переслано от Dima
если же не отключать open session in view, то у вас транзакция будет открытая на протяжении всей жизни запроса, что приведет потом к перегрузке пула и отказу приложения
источник

D

Dima in pro.jvm
Как по мне DTO больше к передаче инфы по сети относится. Внутри же основной логики работа идёт с доменной моделью. Хотелось бы ещё почитать именно какой-то  источник, где 1) описаны эти архитектурные паттерны в общем, 2) описаны в контексте спринга.
Просто никто особо не мешает маппить в контроллере: сервис принимает/возвращает модель в рамках транзакционного метода, контроллер мапит модель. Присутствие managed jpa сущности в контроллере не обязательно при этом.
источник

D

Dima in pro.jvm
Переслано от Dima
>Как по мне DTO больше к передаче инфы по сети относится.

это необазтельно

>Внутри же основной логики работа идёт с доменной моделью.

Вот вы путаете, потому что считаете, что JPA Model == Domain Model. Но это не так. На самом деле Domain model, это совокупность всех ваших сервисов-интерфейсов и их реализаций + дто + репозитории/дао. Это Anemic Model. И для контроллера общение с моделью выглядит, как вызов апи сервиса и получение результата в виде DTO.

Паттерны эти гуглятся легко, у того же Фаулера, а в репах спринга можно найти примеры.


>Присутствие managed jpa сущности в контроллере не обязательно при этом.
у вас протекла скрытая часть доменной модели, к которой напрямую получил доступ веб-слой, это неправильно, так еще и проблемы с перфомансом и поддержкой кода доставляет.
источник

A

Artjom Kalita in pro.jvm
контроллер описывает ифрастуктурные вещи и является интерфейсом
источник

D

Dima in pro.jvm
Dmitry Maslov
так обоснуй тогда, какие есть причины, чтобы конвертить сущность в дто в сервисе, а не в контроллере?
вот тред с таким же вопросом от 21 сентября
источник

A

Artjom Kalita in pro.jvm
@dmsol херасебе у тебя это домашняя заготовка была ? =)
источник

D

Dima in pro.jvm
Artjom Kalita
@dmsol херасебе у тебя это домашняя заготовка была ? =)
потому что этот вопрос всплывает стабильно раз в несколько месяцев
источник

D

Dima in pro.jvm
не проблема перепостить
источник

A

Alex in pro.jvm
Думаю скрывать сущности за интерфейсами сервисов ближе к Clean Architecture
источник

D

Dima in pro.jvm
проблема такое рефакторить
источник

A

Artjom Kalita in pro.jvm
меня удивляет почему open-in-view по дефалту тру
источник

D

Dima in pro.jvm
тут обсуждать нечего
источник

A

Artjom Kalita in pro.jvm
постоянно надо вырубать нафиг
источник

D

Dima in pro.jvm
простая логика
источник

D

Dima in pro.jvm
JPA энтити живет в транзакционном контексте
источник

D

Dima in pro.jvm
если у вас транзакционный контекст в контроллере - значит у вас грязь
источник

D

Dima in pro.jvm
Artjom Kalita
постоянно надо вырубать нафиг
согласен
источник

D

Dima in pro.jvm
эта штука убийственная просто
источник

A

Artjom Kalita in pro.jvm
Еще можно относится к контроллеру как к интерфейсу -  и смотреть с той стороны - а если вам придется из реста переходить на графкуель - как болезнено это будет ?
Если контролер чистенький маленкий то заменить его Резолвером будет весьма быстро а бизнес логика она где-то там в глубине сервисов
источник

z

zafar in pro.jvm
Dima
Переслано от Dima
тем более дто это не только классы с таким суффиксом, ну и любой дата-класс
ДТО != любой дата класс.

Очень много путаницы и споров возникает из-за этого недопонимания. Как и у всех шаблонов у ДТО есть применение. В шаблонах структура и интерфейс классов не самое главное.
источник