Андрей Беляев - DTO: живи быстро, гори ярко

  Рет қаралды 16,792

JPoint, Joker и JUG ru

JPoint, Joker и JUG ru

8 ай бұрын

Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября, Санкт-Петербург
- -
DTO - один из самых простых паттернов проектирования. Но в реальном мире аббревиатурой DTO называют разные виды объектов. В докладе рассмотрим, зачем нужны DTO, где их можно использовать и какие средства работы с ними бывают. Разберемся, сколько трансформаций могут пройти данные на пути от базы до API и обратно, какие бывают особенности маппинга данных при помощи разных структур и сколько видов проекций есть в ORM.
Презентация к докладу: squidex.jugru.team/api/assets...
#java #dto

Пікірлер: 36
@oleksandrvasylchenko316
@oleksandrvasylchenko316 5 ай бұрын
Перешли на рекорды, по сути те же POJO, но красивее и быстрее. Мапстракт отлично справляется, забыл уже когда писал хоть какойто мапинг. Для сериализации десериализации юзаем уже моделМаппер Jackson, удобно, легко мапит и снейк_кейс и камелКейс. Jakcson с версии 2.15 с рекордами работает.
@ilyalisov5284
@ilyalisov5284 8 ай бұрын
спасибо большое за видео, много знал, однако услышал и много интересного и полезного!
@amalnishanaliev3142
@amalnishanaliev3142 3 ай бұрын
Кайфанул прям, Спасибо огромное :)
@MiSaxap
@MiSaxap 8 ай бұрын
Спасибо
@opalev
@opalev 8 ай бұрын
37:53 Проекции, тут получается, что мы можем только одно вычисляемое поле добавить таким способом, так ведь?
@kotpodlampoi
@kotpodlampoi Ай бұрын
спасибо большое, было познавательно, от себя добавлю что mybatis + ломбок достаточно хорошо решает данные проблемы так как с используем подход pojo и pojo filter extend pojo
@oleksandrvasylchenko316
@oleksandrvasylchenko316 5 ай бұрын
Отличный кодлад
@user-bv3tn2xz3i
@user-bv3tn2xz3i 8 ай бұрын
Record, Java движется в сторону трансформации в Delphi :)
@dimzinnatov7242
@dimzinnatov7242 Ай бұрын
Сочувствую Вам ребята(( Не думал, что в Java так шатко работать с данными
@sanberen
@sanberen Ай бұрын
В этом вся суть
@anti1am3r
@anti1am3r 8 ай бұрын
Итого jpa создает больше проблем, чем решает
@57skies
@57skies 8 ай бұрын
can not agree more! we use raw jdbc for at least 10 years now, we do not miss any jpa/hibernate at all
@user-mj6tf8dc1d
@user-mj6tf8dc1d 8 ай бұрын
У нас Kotlin, мы трансформации (mapping) производим в контроллерах либо extension функции, либо отдельные классы-мапперы, если нужно закинуть зависимости. Смотрю на MapStruct, выглядит как-то тяжеловеснее или примерно так же, как инстанциирование классов в Kotlin. Вывод от себя, в Kotlin MapStruct - это пятое колесо
@AlekseyStukalov
@AlekseyStukalov 8 ай бұрын
А какая разница где? Все равно писать миллион присваиваний где то надо. Мапстракт справляется именно с этим. А позвать его можно и из экстеншен функции... Это ради бога.
@user-mj6tf8dc1d
@user-mj6tf8dc1d 8 ай бұрын
@@AlekseyStukalov так о том-то и речь, что он, конечно, справляется... но 1. Кода в котлин я напишу +- столько же по количеству, сколько в мапстракт 2. В мапстракт вот эта история с описанием вычисляемых полей на EL ещё и несёт риск того, что при будущем рефакторинге IDE может либо просто на этот EL положить, либо криво его зарефачить. А если не дай бог препроцессору IDE вообще плевать на этот EL, то ошибки мы собирать уже будем в рантайм
@AlekseyStukalov
@AlekseyStukalov 8 ай бұрын
​ @user-mj6tf8dc1d 1. Да ладно? А можно посмотреть маппинг графа, например глубиной 3, по 5 аттрибутов на каждой сущности? Мапстракт как раз весь этот код аккуратненько генерит. 2. Так EL то вообще не обязательно использовать. Пишите вычисляемые поля сразу в себя в DTO или на уровне сущности транзиентными полями и все помапится прекрасно. Это слабый аргумент ИМХО.
@uivadim
@uivadim 2 ай бұрын
Очень просто, экстеншен функции для маппинга копятся постепенно. Таким образом во вложенном атрибуте вызываешь его функцию для маппинга
@TheMaliciousMan
@TheMaliciousMan 8 ай бұрын
Кто-то еще произносит DTO как "ди-ти-о"? У нас в офисе все всегда произносили просто как "дто")
@user-mj6tf8dc1d
@user-mj6tf8dc1d 8 ай бұрын
Да, особенно когда с иностранцами общаешься, иначе беда 🙂
@AlekseyStukalov
@AlekseyStukalov 8 ай бұрын
У меня такая деформация. И, например, "Джи Даблью Ти" вместо ГВТ. Это зависит от того какой язык рабочий англ или рус.
@tauren46
@tauren46 8 ай бұрын
когда пофиксят работу Jackson с record'ами тогда можно на них и перейти
@oleksandrvasylchenko316
@oleksandrvasylchenko316 5 ай бұрын
Сверсии 2.15 все прекрасно работает
@tauren46
@tauren46 5 ай бұрын
@@oleksandrvasylchenko316 и со снейк кейса нормально читает? именно с этим проблемы были
@VovkaU5
@VovkaU5 8 ай бұрын
Что мешает писать руками конвертеры и не усложнять себе жизнь ненужными надстройками?
@AlekseyStukalov
@AlekseyStukalov 8 ай бұрын
На самом деле ничего не мешает. Кроме дальнейшего мейтененса.
@bananasba
@bananasba 8 ай бұрын
И в чем же профит этих мапперов, если нормальных проекций из базы в джаве так и не появилось
@Longmanrus
@Longmanrus 8 ай бұрын
ты о чем? из репозитория можно доставать данные не только сущностей но и любой дто. Главное чтобы типы и названия полей совпадали. другое дело что это не используют ибо нужно будет слишком много этих методов делать для каждой дто. Проще достать основную сущность и замапить ее в нужное.
@bananasba
@bananasba 8 ай бұрын
@@Longmanrus о да, просто супер фича
@ivan42832
@ivan42832 4 ай бұрын
Мапперы вообще унылая возня, на порядок проще и удобнее и понятнее и быстрее обычным присваиванием делать. Я понимаю если требуется по 10 сайтов клепать в день, тогда можно эти инструменты использовать, но когда у вас ентерпрайс что вы выиграете этой возней
@user-hq6nm2tf6j
@user-hq6nm2tf6j 3 ай бұрын
как раз в энтерпрайзах это и используется. Когда их за сотни маппингов. Тип и имя совпали и ничего делать не надо. И когда в объекте пару десятков полей, при ручном маппинге вообще каша читаемости будет
@UniXoiD69
@UniXoiD69 8 ай бұрын
Только рекорды и создание руками. Всё остальное... Либы, ломбок - безумие.
@ivanjermakov
@ivanjermakov 8 ай бұрын
Удобно, пока нет сущностей со 150ю полями..
Normal vs Smokers !! 😱😱😱
00:12
Tibo InShape
Рет қаралды 115 МЛН
Dynamic #gadgets for math genius! #maths
00:29
FLIP FLOP Hacks
Рет қаралды 17 МЛН
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 1,6 МЛН
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Levsob
Рет қаралды 30 МЛН
Антон Беляев - "Лететь" (OST фильма "Лёд")
3:18
что в кино
Рет қаралды 2,6 МЛН
CSRF (доска)
9:52
Владимир Башун
Рет қаралды 8 М.
ТЕСТИРОВАНИЕ НА JAVA (JUNIT, MOCKITO)
9:14
Джавист
Рет қаралды 25 М.
JAVA DTO Pattern Tutorial | Simplify Your Code
19:12
Amigoscode
Рет қаралды 187 М.
A Comprehensive Guide to Using Zoyya Tools for Photo Editing
0:50
Как я сделал домашний кинотеатр
0:41
RICARDO
Рет қаралды 1,5 МЛН
#miniphone
0:18
Miniphone
Рет қаралды 11 МЛН
Добавления ключа в домофон ДомРу
0:18
Цифровые песочные часы с AliExpress
0:45