Можно пол года учить язык, но вообще не сориентироваться на работе, когда попадаешь в этот зоопарк технологий. Отдельных курсов по ним хватает, но люди, которые показывают как это все работает вместе... Это бесценно, мужик!) Спасибо огромное. Вводи нас по мере возможности в будни разраба)
@KhuJa20018 ай бұрын
привет. Ты всё до конца смотрел, брат? Рекомендуешь?
@ЁК-МАКАРЁК-я4щ10 ай бұрын
Автор, какой же вы молодец. Вы не представляете как много вы сделали для людей.
@maycode010 ай бұрын
Благодарю
@novikovdanila7 Жыл бұрын
Узнал из данного материала больше чем из платных курсов по Spring’y, а ведь я посмотрел только один ролик всего лишь…. Продолжай в том же духе, дружище, отличная подача материала
@АбайАмангелды-и3з9 ай бұрын
спасибо за урок, объяснения и вправду понятные. Постараюсь усвоить весь плейлист
@Неслучайный2 жыл бұрын
После просмотра 2 часов впечатление на высшем уровне, автор стремается что очень подробно объясняет, но он даже не представляет как выручает таких рыб как я)
@maycode02 жыл бұрын
Спасибо)
@Неслучайный2 жыл бұрын
@@maycode0 как насчет идеи совместного стрима, где я буду дико тупить, а ты рофлить на этом ну и объяснять)
@maycode02 жыл бұрын
@@Неслучайный к сожалению пока не до стримов, может после лета вернусь, тогда и спроси)
@Неслучайный2 жыл бұрын
@@maycode0 к тому времени надеюсь уже прокачаюсь чутка)
@maycode02 жыл бұрын
Хорошо)
@ИльмирЯмалетдинов-ч2р10 ай бұрын
Этот чел просто спас и дал много нужной инфы для разработки сайтов. Я участвую в кокурсе и разрабатываю свйт первый раз. Я раньше с плагинами для майна работал и теперь представьте какого это перейти из 3 часового проекта в глобал проект целой командой работы
@ГригорийКуклин-ф9ч12 күн бұрын
жиза
@sxnks659311 ай бұрын
Привет. Спасибо огромное за видео. Я сейчас смотрю первый стрим, но в планах уже есть просмотреть и все остальные. Очень помогает твое грамотное объяснение каждого шага и небольшие углубления. Очень тяжело двигаться без ментора, и твои видео стали просто отдушиной и позволяют двигаться вперед без упадка мотивации. Буду с нетерпением ждать новых видео, а пока продолжу смотреть!
@chap_012 жыл бұрын
Только начал изучать Java, прочитал в Интернете, что нужно уметь работать с Maven, Gradle, Spring. Наткнулся на Ваше видео. Выражаю благодарность за полезное видео.
@maycode02 жыл бұрын
Не за что) надеюсь получилось помочь)
@SergeiCherkai Жыл бұрын
Джун: - " Как ??? " Синьер: - "Я тебе щаз покажу, но ты просто не бойся" )))))))
@maycode0 Жыл бұрын
Это какой таймкод?)
@devonty79443 ай бұрын
@@maycode0 2:29:25
@maycode03 ай бұрын
Благодарю)))
@nightmason Жыл бұрын
Вначале подумал что не будет ничего полезного, но за всю трансляцию нашёл столько прикольных микрофишек, в общем спасибо!
@maycode0 Жыл бұрын
Здорово, если напишешь какие-то из них - буду благодарен!)
@ИльяШапорто3 жыл бұрын
Блин посмотрел 30 минут очень крутое видео, человек нормально объясняет на понятном языке и складывается понимание, хоть что делаете, спасибо сними побольше видео про кафку, микросервисы, Spring Cloud Config Server, в целом про Спринг, подготовка к собесами т.д. Я сейчас учусь в онлайн школе буду рассказывать про твой канал в чатах)) Спасибо за такой контент он для новичков очень полезен
@ИльяШапорто3 жыл бұрын
Типа как у Алишева по темам, но кор и java ee нафиг не нужен на него русскоязычной информации как г....а А вот более сложные темы, особенно спринг секьюрете, спринг клауд,rest и т.д. О них информации нет от слова совсем И круто вот такие видео где ты объединяешь технологии и показываешь как формируется реальный интерпрайз И будет еще круто если снимешь видео как выгружать и настраивать реальные проекты уже готовые, как правильно читать и понимать код .. Это в будующем и моя идея снимать такие видео, но это еще очень не скоро, я пока с нулевым опытом)))
@ИльяШапорто3 жыл бұрын
И в целом круто рассказывать как идет подготовка к интерпрайзу с чего все начинается, можно как типа стрим, что ходит таска на it отдел или заказчик и т.д. Чтобы вообще понимать, что ожидать как распределяются задачи, как отчеты видутся(понятно что все индивидуально, но в целом есть же стандартные процедуры)
@ИльяШапорто3 жыл бұрын
Блин чуквак ты крут!!!!!!!!!! я УЖЕ 1.5 СМОТРЮ и прям нравится, что говоришь нормальным понятным языком и реально объясняешь логику, а не пздц, которые показывают многие разработчики , мне стало хоть чуть чуть понятно и показал с чего строить сущности и т.д. СпасибО!!!!
@maycode03 жыл бұрын
Спасибо, приятно что нравится контент) За идеи тоже спасибо, постараюсь их продемонстрировать по мере возможности)
@ИльяШапорто3 жыл бұрын
@@maycode0 было бы круто, потому что мы как раз разбираем тестовый прожект и я столкнулся что по микросервисам почти что одни семинары, по кафке вообще нет обучения (типа как внедрять и вообще работать с ней в рамках микросервисах) , а как правильно собирать готовый большой проект, как делать всякие настройки этого вообще нет ... И понимаешь, что любой разраб приходит к этому))) Плюс мало народу объясняют про рест, я по сей день до конца не въезжаю)) Показать на проектах - Интернет магазин - Онлайн школа(именно для подготовки е ЕГЭ )всякие задание как делать и т.д. - Показать мини проект типа банка( как работать с рест сторонними) - Соц. сеть типа вк(показать как настраивается отправка по email) - Поиск билет типа туроператоров, я как понял они очень много используют рест с разных источников было бы круто явно показать как это на беке делается и еще круто небольшую может инфорграфику делать картинки чтобы визуально представлять что вот 1 приложение идет сюда и т.д. ) я прям уверен это будет ТОП контент так как его нет почти что и многие побаловались на коре и чутка спринге, а когда увидели настоящие проекты, то аку...ли от объема))))))))))))
@snakemil2 жыл бұрын
Какая потрясающая подача.
@maycode02 жыл бұрын
Спасибо)
@Stefik0012 жыл бұрын
Все очень круто! Продолжай в том же духе !
@maycode02 жыл бұрын
Спасибо, но пока некогда)
@НаташаМакарова-ж5е3 жыл бұрын
Спасибо за контент) Приятно смотреть и слушать. Главное, чтоб вы не останавливались
@ConfidenceGold7 ай бұрын
Ты просто красавчик, большое спасибо
@egorp82452 жыл бұрын
Очень крутое видео. Большое спасибо !
@GoogleMogle4 ай бұрын
Уважуха, брат
@РахатбекКожантаев2 жыл бұрын
Да, братан! Ты очень и очень помогаешь, Спасибо!!!
@maycode02 жыл бұрын
Спасибо за отзыв, надеюсь это действительно так)
@alekseylazunin6260Ай бұрын
@@maycode0 Привет! Ты будешь ещё продолжать или забросил канал? Видео отличные =)
@maycode0Ай бұрын
@alekseylazunin6260 еще появлюсь когда появится какая-то интересная тема)
@alekseylazunin6260Ай бұрын
@@maycode0 Огромное спасибо за ответ! Я ещё не все видео посмотрел (может в других такое происходит), но как новичок могу сказать, что часто проблема - не знаешь как подступиться. Хочешь что-то сделать, начинаешь рисовать какие-то попытки архитектуры, а пока рисуешь, всё обрастает классами методам и становится страшным, что в итоге и не начинаешь, потому что не знаешь с чего начать, как проверить да не запутаться. Если будет желание и настроение, сделать какое-нибудь условно (возможно умышленно) сложное приложение из нескольких микросервисов в том виде, как оно бы эволюционировало в обычной жизни. То есть вот есть продукт, который хотим получить. Вот так размышляем. Сначала пилим вот эти три сервиса и у нас MVP. А теперь вот эти два появляются, а в тех мы немного поведение меняем или реализацию и т.п. В общем, помочь убить страх сложной разработки =) Ещё раз благодарю за ответ.
@John.Constantine.7776 ай бұрын
ModelMapper позволяет убрать все классы превращения в DTO и обратно. Это очень красиво, если ты за красоту и охренеть как лаконично. Подтягиваешь зависимость, создаешь бин в Application, внедряешь его в контроллерах и преобразовываешь одной инструкцией.
@maycode06 ай бұрын
Я за явность поведения и простоту, а не только красоту))) И с точки зрения ясности и простоты подходит метод в лоб. На маленьких проектах с минимумом конвертации и преобразований этот подход может и будет удобен(ModelMapper), но не вижу проблем добавить пару классов и вручную все контролировать) Еще не слышал чтобы в крупном проекте его юзали 🤷
@olyalya9651 Жыл бұрын
Спасибо за классный стрим!
@---ld1is5 ай бұрын
привет! очень крутой!
@nikzim21322 жыл бұрын
круто !) спасибо )
@abuyasin29312 жыл бұрын
Возвращайся, бро!
@John.Constantine.7777 ай бұрын
вместо шаблонов можно просто копировать созданный ранее класс или интерфейс с зажатым ctrl в ту же папку, останется изменить совсем немного
@maycode07 ай бұрын
Конечно можно) Но на моей практике быстрее использовать шаблон, чем делать копипаст и сносить кодовую базу каждого класса почти под ноль под нужды другого домена
@John.Constantine.7777 ай бұрын
@@maycode0 но с шаблоном не понятно. как его создать и как использовать?
@maycode07 ай бұрын
Когда что-то непонятно - учи мат часть) так меня учили :DDD - www.jetbrains.com/help/idea/using-file-and-code-templates.html?ysclid=lxgnjm0z33780829486#syntax
@maycode07 ай бұрын
Ну или так - habr.com/ru/articles/343232/
@John.Constantine.7776 ай бұрын
если IDEA туго компилирует, надо попробовать компилятору увеличить heap size, если речь об этом
@LevanovSiarhei3 жыл бұрын
Очень интересно, завтра сам повторю сам. Доя меня интересен был сборщик так как я в основном мэйвен использую и настройки в ямле. Ты наверное искал uml схемы, У ламбока есть анотация дата Вместо Гетарс и сеттерс.
@Alexander-ei8ul Жыл бұрын
Есть, только всегда ли она нужна? Учитывая что она переопределяет equals и hashcode, что не всегда нужно и может что то сломать )
@alexr0v2 ай бұрын
Подскажите, в какой последовательности смотреть плейлист? Это первое видео? Просто потом начинается другой проект и не сначала, потом продолжается этот. Посмотрел немного, супер полезный материал, но последовательность не понимаю.
@hybi6668 ай бұрын
Отличная информация, но 4 часа меня добили. Подача и энтузиазм автора понравились, как он так выдерживает?)
@maycode08 ай бұрын
Не знаю, сам в шоке как он это делает)
@gwazowskii23653 ай бұрын
Автору огромное уважение за понятность изложения и углубленность объяснений. Подскажи, в 2024 всё также преобразуешь сущности в ДТО через фактори ручками или используешь библу MapStruct? Я просто всегда в своих монолитах юзал MapStruct, и мне интересно услышать, что сейчас используют в 2024 году в коммерции. Спасибо!
@maycode03 ай бұрын
Все так же - ручками)
@ivankuzmin413211 ай бұрын
Мне кажется вместо создания дополнительных factories, легче создать конструктор в дто TaskDto(Task task), где принимать в качестве аргумента модель и на её основе билдить поля дтошки
@maycode011 ай бұрын
Раньше так и было. Но если тебе нужна какая-то особая логика - включить в процесс сборки сторонние Бины, до запрашивать данные - в этом случае это не гибкий подход. Поэтому мы от этого подхода и ушли и стали делать классы-фабрики создания ДТО
@ivankuzmin413211 ай бұрын
понял спасибо@@maycode0
@denisgeraskin5532 Жыл бұрын
Спасибо большое автору! Вопрос: Где то на 1:50:00 автор запускает приложение и у него создаются таблицы в БД. Я все пере проверил у себя - таблиц нет, но приложение запускается. Подскажите в чем может быть причина?
@maycode0 Жыл бұрын
А в свойствах приложения spring.jpa.hibernate.ddl-auto = update стоит?
@denisgeraskin5532 Жыл бұрын
@@maycode0 если ты про файл с настройками "application.yml" - ДА, стоит. Я подсмотрел проект на твоём GitHab-е и ещё добавил "show-sql: true". Но это не дало результатов. Сразу оговорюсь, что версии Plugins & Dependencies свежее.
@pascalmynativelanguage10159 ай бұрын
У тебя получилось решить проблему?
@John.Constantine.7776 ай бұрын
Спасибо! В инете не хватает такого формата, что б джуны могли охватить минимальную последовательность разработки приложения в целом, тем более на Idea Подача четкая. Раздражает только переключение туда-сюда, неужели работаешь на одном мониторе?
@maycode06 ай бұрын
Все верно, на одном
@John.Constantine.7776 ай бұрын
@@maycode0 чувак, у меня 3 и я бы купил еше 3 сверху над головой. Как только переезжаешь на несколько мониторов, удивляешься почему не сделал этого раньше.
@maycode06 ай бұрын
Это здорово, каждому свое, но я хорошо управляюсь и с одним) На работе вообще стоит 34 дюйма огромный и его хватает на две запущенные IDE. Мак приучил меня использовать рабочие столы и это оказалось очень удобным для меня, нежели сидеть вертеть головой и сбивать фокус))
@playtopgames3261 Жыл бұрын
Видео оч круто, но будет ли вторая часть? Почти 3 года уже прошло, но вижу автор почти на все комментарии отвечает P.S. Увидел, вроде в трансляциях должно что-то быть)
@gera.v.v Жыл бұрын
Блин, у нас такая валидация полей реквеста была колхозная на проекте, было бы интересно узнать как у вас.
@aziztolearn3 жыл бұрын
thank you
@maycode02 жыл бұрын
Y’re welcome
@kelvin46573 жыл бұрын
Надеюсь ты вернешься)
@maycode03 жыл бұрын
Я тоже)
@gera.v.v Жыл бұрын
Про @Data познавательно. У себя на проекте видел exclude, примерно понимал для чего, но на тот момент не думал так глубоко. Но тогда еще не знал про lazy и тд
@ВасилийГоловко-д9и3 жыл бұрын
есть некоторые замечания: - забыл про сервисный слой. Контроллер должен вызывать сервис, который вызывает репозиторий - это делается, т.к. данные могут хранится не только в БД - контроллеры старайся не раздувать так - для этого используем сервисы, где вся логика и используем паттерн фасад - Transactional - тоже переносим в сервис и плохая практика писать нам классом, пишется над методом, т.к. для некоторых можно юзать еще параметр (readOnly = true). Тем более, если у тебя идет обращение к БД, потом еще какая-то логика, то в это время в БД открыта транзакция и она будет открыта пока не завершится метод, что не есть хорошо. При больших нагрузках проект будет лежать
@maycode03 жыл бұрын
Про сервисный слой я не забыл) мы намерено его не используем в своей инфраструктуре, а если и используем, то по минимуму, со всем остальным в целом согласен
@John.Constantine.7777 ай бұрын
@OneToMany(mappedBy = "owner") меняет способ управления связью, указывая на двунаправленную связь и предотвращая дублирование данных и создание дополнительных таблиц.
@gera.v.v Жыл бұрын
Нет, про sequence ты придумал. Для каждой таблицы свой sequense создается, который хранит последнее значение. А не если в одной таблице сохранил с id 1, то в другую таблицу с номером 2. Вообще интересно посмотреть, спасибо автору
@maycode0 Жыл бұрын
Привет, не придумал) Есть разные моды, один на уровне таблицы, другой на уровне БД, почитай)
@maycode0 Жыл бұрын
Но это чисто хибернейтовская штука, она доп табличку создает, где держит атомарный счетчик.
@stonmix680811 ай бұрын
Если не трудно, расскажи, повлияло ли высшее образование и знание английского языка на трудоустройство?
@maycode011 ай бұрын
Все зависит от компании. В моем случае влиял больше мой личный опыт в разработке. Английский со временем подтягивается, потому что весь код на Английском)
@stonmix680811 ай бұрын
благодарю)
@Wansery Жыл бұрын
Кодить на белой теме💀
@maksimmakarov9541 Жыл бұрын
Белая днем, темная вечером🎉
@gera.v.v Жыл бұрын
Конечно в post запросе при создании объекта все параметры должны в body идти. Ну у тебя только name, а когда будет 10 полей у обьекта- что все 10 В реквест парам пихать? 10 полей.? Не больше 3 обычно принято. Реквест парамы в get. Ну насколько у нас на проектах и на сколько понял по многим видео . да и будешь постманом пропихивать, тестить. Будешь создавать новый объект на 10 полей, будет километровый урл
@maycode0 Жыл бұрын
RequestParam в POST может и через form data принимать как бы
@maycode0 Жыл бұрын
А form data - находится в body :)
@maycode0 Жыл бұрын
Так что советую некоторые вещи проверять все таки перед написанием комментария)
@asgzxbaasg97669 ай бұрын
Чтоб разработчик не знал что за вкладкой Structure скрывается, выглядит забавно А для того чтоб бликов не было есть занавески и шторы
@kamilmmmdov97113 жыл бұрын
А почему project зависит от TaskState (статусов задач) если по логике будет правильней зависимость проектов от тасков а уже остюда таски от таскстейтов Грубо говоря получится что-то такое: Project -> Tasks -> TaskStates а не Project -> TaskStates-> Tasks
@maycode03 жыл бұрын
В целом это можно организовать по разному, но здесь цель была передать структуру trello сервиса, а там, task не существует без taskState, то бишь сначала создаётся именно стейт, в котором находятся все таски. В вашем подходе у задачи изначально может не быть состояния) Но если посмотреть на сервис трелло, то он позволяет создать стейт без задач
@maycode03 жыл бұрын
Таким образом, наличие стейта не означает наличия задач, как вы это реализуете при своём подходе?)
@91zelas3 жыл бұрын
Что за плагин который помогает генерировать запросы, генерируемые по имени метода?
@maycode03 жыл бұрын
Добрый вечер, что именно вы имеете ввиду? Можно таймкод?
@91zelas3 жыл бұрын
@@maycode0 Спасибо за ответ. я имел ввиду то что происходит на (2:36:18). я уже разобрался я просто забыл включить java persistence модуль
@maycode03 жыл бұрын
Окей)
@sfx6248 Жыл бұрын
1:49:26 у меня таблицп не сгенерировалась что делать😅
@maycode0 Жыл бұрын
А в пропертях приложения указано ddl-auto: update?
@pascalmynativelanguage10159 ай бұрын
Тебе удалось решить проблему?
@TooGoolka Жыл бұрын
нужно было в настройках в SDKs поменять на 11))
@djadjaandrey9 ай бұрын
👍👍👍
@Max13297 Жыл бұрын
укникальный топ контент! скажи а есть у тебя видео где несколь микросервисов вместе работают? спасибо за труд.
@maycode0 Жыл бұрын
Только через RabbitMQ. Посмотри на канале
@JohnDoe-lw1uv8 ай бұрын
Начало было неплохое, но потом ппц наговнокодил)
@gera.v.v Жыл бұрын
Автомапперы очень медленные. Я на своем проекте замерял время. MapModelToDto. Оно через рефлексию берет класс, все егополя и методы. А рефлексия оч медленная. Получилось обычный маппинг в дто из модели быстрее в 70 раз. Да в семьдесят раз. Чем автомапперы. Делал 20 замеров, случайных вроде 50 объектов с бд с 15 полями. Если бы полей было больше, автомаппинг отстал бы еще сильнее. Так что мапить модель в дто вручную - норм
@VladikBezsmertnyi2 жыл бұрын
Какой паттерн используется в уроке? Подскажи пожалуйста
@maycode02 жыл бұрын
Где именно?) Это немного не урок)
@VladikBezsmertnyi2 жыл бұрын
@@maycode0 я имел ввиду видео какой паттерн используется
@maycode02 жыл бұрын
@@VladikBezsmertnyi MVC?)
@Elita-o2n3 күн бұрын
@@maycode0 Controller - это контроллер. А где Model и View?? Понятно что это проблема наименований но суть не понял какие блоки или папки отвечают за Model и View в данном проекте?? Заранее Благодарю!!
@maycode02 күн бұрын
Model - это ...Entity, View - это …Dto (имеются ввиду постфиксы классов. Какие пакеты - смотрите внутри проекта)
@slonichev10 ай бұрын
О май гад. Для тех кто не создаёт сервисы, предлагаю все приложение через один java файл реализовывать, даже в одном классе. То есть dto решил сделать, а логику транзакций совместил с обработкой http запросов. Я правильно понимаю, что если будут проверки безопасности, фильтры и прочее все стерпит контроллер ? Solid в помощь
@maycode010 ай бұрын
Вы правы, на данный момент мой подход изменился. Но я изначально оговорился что мои тестовые примеры не требуют таких усложнений. Так же я сразу сообщил, что я показываю как это делаю я и это не является учебным примером.
@gera.v.v Жыл бұрын
Сервис нужен. В нем validationRules, validationConfiguration. Проверки, вернул тебе репозиторий findByName optional null. Будешь в контроллере проверку optionalIsPresent делать? В контроллере модель создаешь- тоже не порядок. Ну может только если сохранять данные, без ничего. В любом случае, полезное дело делаешь. Да в любом случае, принцип единойтответственности solid. Класс должен за одну свою узкую функцию отвечать. А так он принимает, делает модель, и в репозиторий отправляет. Так что любой человек откроет этот "красивый" проект, увидит этот чудо контроллер, и за голову возьмется. И не объяснишь никому, что сервис не нужно. Хотя хозяйское дело.
@maycode0 Жыл бұрын
Расскажи это разработчикам спринга в том числе:) Вот пример простого реста по их мнению (раз уж они выделили отдельные ControllerAdvice, что же это они, не могли добавить сервисный слой ?)- github.com/spring-guides/tut-rest/blob/main/rest/src/main/java/payroll/EmployeeController.java
@gera.v.v Жыл бұрын
@@maycode0 не, я ж не хотел никого обидеть, видео оч крутые. Мне очень интересно. И много кому помогает. Потому что многие по java core пишут и все. А вот то что на практике в разработке- нету. Спасибо
@maycode0 Жыл бұрын
Да я и не обижаюсь) Просто у нас в компания такая практика и я показываю как частично выглядит процесс разработки у нас. Я пока не видел примера идеальных проектов, если найдешь - скинь, возможно переработаю свой подход) Но сервисы появляются только тогда, когда мне нужно разнести кодовую базу между несколькими модулями, тогда и появляется сервис, до тех пор процессинг в контролере, легкий и непринужденный)
@Дмитрий_Ник9 ай бұрын
@Column пишем, если не хотим чтоб в коде название переменных было например с нижним подчеркиванием. Нижнее подчеркивание я использую в названии колонок, но в коде кэмелкейс @Column(name = "total_hours") private Double totalHours; @Column(name = "hourly_rate") private Double hourlyRate; @Column(name = "total_salary") private Double totalSalary;
@maycode09 ай бұрын
Разве по дефолту camelCase название поле не конвертируется в snake_case для БД? У нас требования чтобы был snake_case в БД и camelCase в коде, но я никогда не пишу @Column для переопределения имени.
@майклавов2 жыл бұрын
Куда пропал? У тебя реклама яндекс по таргету Пенза . Я тоже с Пензы
@АртёмЗыков-ю5й2 жыл бұрын
Что то в телеге давно записей не было. Канал-то хоть будет обновляться?
@maycode02 жыл бұрын
Да, но пока его деятельность приостановлена
@АртёмЗыков-ю5й2 жыл бұрын
@@maycode0 на долго? Может просто коротеньких выдосиков запилить что бы интерес поднять?
@maycode02 жыл бұрын
Времени особо на это пока нет, я бы с радостью
@maycode02 жыл бұрын
Но любой контент требует продуманности) даже короткое видео, и не факт что их быстро и просто записать
@АртёмЗыков-ю5й2 жыл бұрын
@@maycode0 например тестирование, 15-ти минутные ролики уверен зайдут. Если глянуть, то толкового ничего нет. Моки также интересны. Это ведь не маленькая тема))
@rudolfsikorsky79002 жыл бұрын
Смотрел-смотрел, но так и не понял зачем нужны DTO. Если в контроллере возвращать Entity, то она будет сериализована в JSON и всякая логика оттуда будет исключена автоматом, останутся только данные. Так зачем создавать ещё один слой? А вот сервисы - полезны. Они позволяют сделать контроллеры максимально "тонкими", а всю логику (валидацию, преобразование, аудит/логирование) убрать в сервисы. При этом не обязательно все объекты "пропускать" через сервисы (ну если только для однообразия), объекты без обработки можно "раздавать" прямо из репо. Кстати, репо, DTO и пр. можно создавать прямо в IDEA: в JPA Structure выбираешь Entity, ПКМ - new и выбираешь что создать. Останется только растащить их по нужным папкам.
@maycode02 жыл бұрын
Возвращать Entity - плохая практика, так ты рискуешь отдать важные данные, если все не учтешь. В том числе и лишние связи. Для тонкой работы с выдачей и нужна ДТО, через которую ты ЯВНО контролируешь весь поток данных от сервера.
@rudolfsikorsky79002 жыл бұрын
@@maycode0 Да, с этой логикой уже можно согласиться, правда в кино об этом (вроде) нету :)
@John.Constantine.7776 ай бұрын
а валидацию аннотацией тоже не делаешь?
@maycode06 ай бұрын
Все по красоте ручками)
@John.Constantine.7776 ай бұрын
@@maycode0 не, чел, там все довольно круто. Зря ты не интересуешься кто что и как делает. Полагаю ограничиваешься требованиями своих тимлидов. Это ты зря. Реально не понимаю как ты каждое поле валидируешь "ручками". Видимо скидываешь на фронт основную валидацию... Даже простейшие курсы по спринг валидацию не пропускают.
@maycode06 ай бұрын
Конечно на фронт!! Мы же верим что пользователь не захочет обойти его и отправить свой запрос через Postman и сломать нам бд своими данными. Мы же наивные:)))
@qwerty-hc7od3 жыл бұрын
Спасибо, интересно. :) Но есть некоторые замечания: - equals и hashCode нужно ОБЯЗАТЕЛЬНО прописывать, ведь Hibernate сравнивает объект по ним, чтоб решить, есть ли уже в кеше эта сущность или надо идти за ней в бд, не говоря уже про использование в Set и Map тоже пригодилось бы. - в equals и hashCode НЕЛЬЗЯ указывать id, потому что до того, как Hibernate сходит в БД, id у сущности null. - при использовании ломбоковской @EqualsAndHashCode, чтоб не городить над каждым ненужным полем @EqualsAndHashCode.Exclude, можно же задать @EqualsAndHashCode(onlyExplicitlyIncluded = true) и потом только над теми немногими неизменяемыми полями прописать @EqualsAndHashCode.Include , о чём в чате писали. Всё ж это есть в документации projectlombok.org/features/EqualsAndHashCode - Сложность с equals и hashCode как раз в том, чтоб выделить набор определяющих сущность полей, ведь даже id из БД, как я выше написал, не подходит для этих целей. Вот тут как раз может и пригодиться UUID. - что за противопоставление JPA и HikariCP?! Как можно противопоставлять спецификацию ORM и пул соединений с БД??? Там надо было ответить, что там в зависимостях Spring Data и так используется этот пул, в чём легко убедиться, раскрыв в идее External libraries. - .gitignore лучше свой прописывать в корне проекта, а не идеевский в папке .idea, потому что гит же не смотрит в папку идеи. - огромная просьба, когда что-то рассказываете, не надо дёргать мышкой, без толку что-то туда-сюда выделять - это очень мешает воспринимать слова и читать код! - для ютуба лучше использовать светлую тему, потому что на тёмной теме ютуб начинает размазывать границы букв - буквы становятся менее чёткими, будто проблемы со зрением, надо присматриваться, больше идёт нагрузка на глаза, да и это начинает отвлекать, потому что уже не код читаешь в первую очередь, а занимаешься разбором символов в этой размазне. И поэтому со светлой темой видео можно смотреть на небольших экранах без проблем, а с тёмной приходится как можно больше делать физический размер видео при просмотре.
@maycode03 жыл бұрын
Хорошо, спасибо за замечания)
@qwerty-hc7od3 жыл бұрын
@@maycode0 Кстати, в части 2 было бы хорошо проработать момент, что проекты могут быть уникальными только в рамках одного аккаунта, а не всей базы. А имя таска - уникальным только в рамках проекта, а не всей базы (ну, вдруг получить B2 по английскому не только один пользователь захочет, правда ж?). Точно так же и статусы. Интересно будет посмотреть, как такую "локальную" уникальность можно реализовать.
@maycode03 жыл бұрын
Хорошо, интересная задачка) Но думаю не сложная)
@ВасилийГоловко-д9и3 жыл бұрын
чтобы использовать кеш - надо подключить кеш второго уровня и использовать какую либо реализацию( EHCache например ) и использовать аннотацию @Cache и equals и hashCode совсем для других целей используется в hibernate - это можно почитать в документации
@virus87276 ай бұрын
что у тебя за клавиатура стоит?
@maycode06 ай бұрын
А что такое?)))
@MarvinMatters11 ай бұрын
Надо поменять в названии "микросервис" на "сервис". Потому что новичков отталкивает, а остальных вводит в заблуждение, они ожидают что-то про микросервисную архитектуру и смотрят 4 часовое видео зря
@abuyasin29313 жыл бұрын
топ
@maycode02 жыл бұрын
Спасибо)
@ElnazAusArdSkelig Жыл бұрын
Хороший стрим, но я не могу понять почему ты всю логику пишешь в контроллерах. Возможно требование со стороны компаний, но когда я проходил обучение, нас учили писать логическую часть в Service, в отдельном классе. А далее вызывать ее в контроллерах. Таким образом мы не заполняем ее лишними вещами
@maycode0 Жыл бұрын
Все верно. Ранее это не было принципиальным вопросом, но лучше писать в сервисах)
@ElnazAusArdSkelig Жыл бұрын
@@maycode0 Ясно)) Благодарю за стрим и вот вопрос, какой у тебя грейдинг и сколько лет опыта? Как долго ты учил Java, по курсам или сам?
@maycode0 Жыл бұрын
@ElnazAusArdSkelig Java учил по книге Герберта Шилдта. Но до этого выучил C++ и перейти с него на Java было не сложно. Грейдинг - уже не знаю честно говоря, последний раз был мидл) Опыт работы - 5.5 лет
@maycode0 Жыл бұрын
@ElnazAusArdSkelig Java выучил где-то за неделю, две. Но это после того как за месяца 3 изучил C++
@ElnazAusArdSkelig Жыл бұрын
@@maycode0 Ого,как интересно! Спасибо большое за ответ!
@gera.v.v Жыл бұрын
Чел про uuid явно посмотрел на обучающих уроках. Никто uuid не генерит для проектах реальных. Sequense, или identity. Начальное значение, и на сколько увеличивать. И все.
@maycode0 Жыл бұрын
У нас на проде в некоторых сущностях аналог UUID - Sha256 урезанный на основе UUID, ничего, живы здоровы)
@maycode0 Жыл бұрын
Если что обучающие ролики почти не смотрел, так что не очень понимаю о чем речь. Я больше по конференциям)
@aziztolearn3 жыл бұрын
help to channel
@mikegrig903 Жыл бұрын
смотрю уже пол часа на скорости 1,5 столько лишнего пиздежа. Только остальные положительные комменты заставляют смотреть дальше
@maycode0 Жыл бұрын
Ничего не могу поделать, это формат живого общения, а не конспектированное видео:)
@Inventors-A11 ай бұрын
Согласен. Меня хватило на почти час и вырубил. Смотрел тоже из-за положительных комментов
@pieinassyoutube99473 ай бұрын
Чувак, это запись трансляции. Очевидно, что и общение с чатом есть. Умей фильтровать информацию, а ее тут очень много полезной, если понимать о чем речь.
@gera.v.v Жыл бұрын
Кайфовый канал. Для зрителей еще советую найти jusaf чела. По имени, тоже полезно. Там и dockerа хватает и kubernates
@gera.v.v Жыл бұрын
В дто можно просто над классом поставить аннотацию , и над каждым полем не ставить . @JsonInclude(Include.NON_NULL) //or Include.NON_EMPTY
@John.Constantine.7777 ай бұрын
что бы создались таблицы мне понадобилось дописать properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect почему так?
@maycode07 ай бұрын
Не могу ответить. Мне достаточно указанных пропертей в проекте(именно самого подключения к БД и путь к драйверу). По сути хибернейт по драйверу и мета информации от БД сам может определить нужный диалект.
@John.Constantine.7777 ай бұрын
@@maycode0 возможно вмешиваются какие то плагины
@maycode06 ай бұрын
@@John.Constantine.777 зависимости - возможно, плагины - очень сомневаюсь