Size: a a a

2020 September 21

D

Dima in pro.jvm
источник

R

Rushan in pro.jvm
Vladislav Plakhov
Хочешь как на проде - поднимай как на проде
Все зависит от желания вашего
А как принято? Кубер кажется избыточным, но вроде как могут  быть какие то неожиданные эффекты из-за того что окружения разные
источник

TI

Tolegen Izbassar in pro.jvm
Dima
пул явно не передается
Понял, гляну, спасибо
источник

TI

Tolegen Izbassar in pro.jvm
Rushan
А как принято? Кубер кажется избыточным, но вроде как могут  быть какие то неожиданные эффекты из-за того что окружения разные
Нету принятого способа. Если есть возможность локально поднять максимально приближенно к проду, то лучше так. Но это не всегда возможно. Иногда проще некоторые сервисы отключить вообще (авторизация например) или подключиться к бд в инфре.
источник

TI

Tolegen Izbassar in pro.jvm
Но кажется вообще желательно избегать поднятия всего окружения. Писать тесты, в тестах поднимать контейнеры.
источник

V

Vlad in pro.jvm
Кирилл Веревкин
И в каждом handler лезть в БД за уже созданными объектами при необходимости? Т.е. мы создали сущность в БД в предыдущем handler и надо добавить ссылку на нее
А почему не выделить логику, которая лазит в базу в один из хэндлеров, а другие оставить с другим функциями?(валидацию, сбор необходимых данных для похода в базу) и тд
источник

SY

Sergey Yezhov in pro.jvm
Dima
маппишь в сервисе, сервис возвращает дто, контроллеры тонкие
С этого места поподробнее, плз) Просто кто во что горазд: одни мапят в контроллере, другие в сервисе, и интересно, откуда ветер дует (есть книга/статья где это описано?)

Например здесь
https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application
есть такое

Let's now look at a service level operation – which will obviously work with the Entity (not the DTO):
источник

D

Dima in pro.jvm
Sergey Yezhov
С этого места поподробнее, плз) Просто кто во что горазд: одни мапят в контроллере, другие в сервисе, и интересно, откуда ветер дует (есть книга/статья где это описано?)

Например здесь
https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application
есть такое

Let's now look at a service level operation – which will obviously work with the Entity (not the DTO):
все очень просто, дто на самом деле может применяться на любое архитектурном слое приложения, это не противоречит паттерну никак
источник

D

Dima in pro.jvm
тем более дто это не только классы с таким суффиксом, ну и любой дата-класс
источник

D

Dima in pro.jvm
теперь что касается дто и сервисного слоя, тут тоже все очень просто
источник

D

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

D

Dima in pro.jvm
по этой причине JPA-сущность не может никак присутствовать в веб-слое - она не может нормально функционировать без хаков в слое контроллеров
источник

D

Dima in pro.jvm
одним из таких хаков является open-in-view, который сразу должен отключен перед выкаткой в прод
источник

D

Dima in pro.jvm
из всего выше сказанного следует, что мы должны забрать данные из JPA-сущности в конце транзакции и передать дальше контроллерам - для этого и нужен DTO + mapper.
источник

D

Dima in pro.jvm
Если вы отдадите JPA-сущность в слой контроллеров после завершения транзакции, вы получите на дефолтных настройках LazyInitializateException
источник

D

Dima in pro.jvm
сервер будет 500-ками плеваться
источник

D

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

SY

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

KS

Kirill Shelopugin in pro.jvm
Dima
у хикари свой пул
Свой пул на получение коннекта, кажется. Твой код будет выполняться в твоём пуле. Разве нет?
источник

KS

Kirill Shelopugin in pro.jvm
Ну и в любом случае самому этот пул контролировать лучше.
источник