Комментарии с JPA Entity Graph. Spring Boot Rest

  Рет қаралды 14,650

letsCode

letsCode

Күн бұрын

Пікірлер: 89
@victormog
@victormog 5 жыл бұрын
Очень-очень нужно и про JPA, и про Hibernate! А еще очень хотелось бы увидеть практическое использование встроенного инструмента IntelliJ IDEA по созданию классов сущностей на основании БД и наоборот!
@maximlevshin
@maximlevshin 5 жыл бұрын
Требуем плейлист по JPA и Hibernate! Спасибо за видео!
@farkhoddaniyarov4909
@farkhoddaniyarov4909 5 жыл бұрын
Очень интересно послушать ваше "унылое" повествование про HIBERNATE и JPA. (+100500 лайков) Большое спасибо за видео :)
@Saprykevich
@Saprykevich 5 жыл бұрын
Уповаю о появление видео про JPA и Hibernate!!! Андрей, большое спасибо за проделанные труды!
@taraskutselya1326
@taraskutselya1326 5 жыл бұрын
Каждый раз возвращаюсь к видео Дрю если надо что то повторить или подсмотреть :) Все быстро, качественно и понятно!
@daurenaldabergenov5984
@daurenaldabergenov5984 4 жыл бұрын
Если будет ошибки с v-list-tile. Many components have been renamed v-list-tile → v-list-item v-list-tile-action → v-list-item-action v-list-tile-avatar → v-list-item-avatar v-list-tile-content → v-list-item-content v-list-tile-title → v-list-item-title v-list-tile-sub-title → v-list-item-subtitle The avatar prop has been removed.
@lumea-arboris
@lumea-arboris 5 жыл бұрын
ТООППППЧИК, ТЫ СУПЕР!!!)) Я даже не представляю, сколько сил ты убил на запись этого видео, да и вообще на этот плейлист, это очень ценная инфа, спасибо тебе!
@kunnilinux
@kunnilinux 5 жыл бұрын
Спасибо за видео!!! Конечно мы хотим углубленный разбор хибера!!!
@ИванИванов-н9ж7и
@ИванИванов-н9ж7и 5 жыл бұрын
Крутенько, как раз то, что мне сейчас очень нужно. А ведь еще и от нормального автора!
@Михаил-я7ь1н
@Михаил-я7ь1н 2 жыл бұрын
Очень-очень нужно и про JPA, и про Hibernate!
@IvanIvanov-oi5nx
@IvanIvanov-oi5nx 5 жыл бұрын
хех... комментарий под видео про комментарии... все как всегда - супер, спасибо и лайк в нагрузку. Ждем продолжения!!!
@vladimirkomissarov851
@vladimirkomissarov851 5 жыл бұрын
Да-да, очень нужны еще видео))
@evgenys2361
@evgenys2361 2 жыл бұрын
Андрей, очень нужные темы раскрываешь и да хотелось бы по подробнее про entityGraf
@sergeyserg2477
@sergeyserg2477 4 жыл бұрын
На index.html не отрабатывает синтаксис thymeleaf [# th:utext="${messages}" /] Namespace добавлен. Инлайн также добавлен.
@sergeyserg2477
@sergeyserg2477 4 жыл бұрын
В качестве костыля используем JSON.parse([[${messages}]])
@andrewsapolsky3880
@andrewsapolsky3880 4 жыл бұрын
@@sergeyserg2477 мое почтение
@borymskyi
@borymskyi 2 жыл бұрын
снял шляпу!
@mizantropoff
@mizantropoff 4 ай бұрын
Да он не то что не отрабатывает, он ругается всеми цветами радуги изначально, и у автора тоже отчетливо вижу красную подсветку какой то ошибки. Он на экран не смотрит?! Костыль костылем, но хотелось бы знать что это?!
@TheSaymonFenix
@TheSaymonFenix 5 жыл бұрын
Отличный видос. Столкнулся с парой моментов: 1 - По аналогии с коментом, решил для сообщения, для поля пользователь добавить теже настройки, т.е. @JoinColumn(name = "user_id", nullable = false, updatable = false) - но такой вариант естественно не прокатил, так то по идее здесь бы уже пора отключить автогенерацию ddl и перейти на миграцию, но это уже разобрано в sweater-ре, хотя бы не отказался и здесь от этого, но с liquibase 2 - После создания нового сообщения в него невозможно добавить комменты сразу. Вылетает какая-то js-ина "Invalid attempt to spread non-iterable instance". Но при этом в бэке все отрабатывает и после перезагрузки все комменты появляются. Думаю дальше этот момент будет поправлен. ЗЫ - обидно что не навалили лайков достаточно для видео про jpa и hiber
@ДулатСагимбаев-о2ю
@ДулатСагимбаев-о2ю 4 жыл бұрын
разобрались ???
@ВадимШох-п5щ
@ВадимШох-п5щ 4 жыл бұрын
У меня при добавлении комментариев возникло несколько ошибок. Я их пофиксил и хочу поделиться. 1) Сначала небольшой лайфхак. Вчера я психанул и удалил папку с проектом))))) Потом через час отошел и решил восстановить его, сделав клон со своего репозитория на гитхабе. Выполнил я клонирование и…...барабанная дробь…. и грэйдл, и ярн отказались что-либо запускать. Как я это полечил: а) Чтобы клонировать данный проект с Гитхаба, идем в папку с проектами, запускаем консоль и вводим git clone github.com/user/project1234.git Естественно, нужно поставить ссылку на свой репозиторий. б) Импортируем проект в Интеллидж идею. При импорте Грэйдл какое-то время будет скачивать нужные пакеты и зависимости (извиняюсь, немного плаваю в терминологии). в) Находим файл SarafanApplication.java Щелкаем на нем правой кнопкой и выполняем команду Run. Грэйдл пытается запустить проект, но вылетают ошибки. Это нормально. г) Находим справа сверху (рядом с кнопками Run, Build) окно с именем приложения (SarafanApplication). Нажимаем на нем левой кнопкой, выбираем Edit Configurations. В окошке Environment variables нужно добавить переменную spring.profiles.active=dev а также переменную clientSecret. Откуда ее взять - смотрите видео про авторизацию. Сохраняем, закрываем. Перезапускам приложение. Вуаля, бэкенд работает. д) Для фронта надо сделать следующее: - Открываем терминал в Идее. - Вводим в консоли yarn init и не отвечая на вопросы, просто нажимаем Enter. - Вводим yarn add vue vue-resource @babel/polyfill @stomp/stompjs sockjs-client vue-router vuetify vuex - Вводим yarn add -D webpack webpack-cli webpack-dev-server babel-loader @babel/core @babel/preset-env @mdi/js css-loader file-loader style-loader stylus stylus-loader vue-loader vue-style-loader vue-template-compiler vue-template-loader - Запускаем проект командой yarn start Фронтэнд тоже заработал. 2) У меня изначально не работает Ломбок. Я не обращал на это внимание, просто вручную писал конструкторы классов, геттеры и сеттеры. Так было до этого видео. Здесь уважаемый ТС впервые использует аннотацию @EqualsAndHashCode. Обойти ее использование я не смог, тупо не знаю чем ее заменить. Пришлось использовать язык Googlish и искать способ запустить Ломбок. Итак, как я завел Ломбок: а) Идем в меню File → Settings → Plugins. В поиске ищем lombok и нажимаем install. Плагин устанавливается. б) Идем в меню File → Settings. В поиске вводим anno Появляется пункт настроек Enable annotation processing. Ставим тут гулочку. в) Открываем файл build.gradle и после строки implementation 'org.projectlombok:lombok' вставляем 2 новые строки: compileOnly 'org.projectlombok:lombok:1.18.8' annotationProcessor 'org.projectlombok:lombok:1.18.8' После этого у меня заработали аннотации Ломбок. Я удалил все свои геттеры, сеттеры, конструкторы и привел код в соответствие с кодом автора. Однако при запуске вывалилась ошибка (проблема сериализации). Проблема оказалсь в файле User.java и она как-то связана с Ломбок. В этом файле мне пришлось отказаться от аннотаций Ломбок и вручную сделать геттеры и сеттеры. 3) После всех этих манипуляций у меня наконец-то завелось приложение. Комментарии добавляются, лепота.. Но перестали редактироваться сообщения. При попытке отредактировать сообщение вываливается ошибка в консоли Идеи. Я полечил это следующим образом. В файле Message.java в строке @OneToMany(mappedBy = "message", orphanRemoval = true) я заменил одно проперти: @OneToMany(mappedBy = "message", cascade = CascadeType.ALL) Это все подбиралось путем проб и ошибок, поэтому почему оно до этого не работало, а теперь заработало - для меня тайна. Надеюсь, кому-то этот комментарий будет полезен.
@АрсенийДьячко-с6у
@АрсенийДьячко-с6у 2 жыл бұрын
не верьте ему, только в версии ломбок 1.18.22 пофиксили баги для новых JDK
@РинатМубаракшин-й9э
@РинатМубаракшин-й9э 5 жыл бұрын
Спасибо за крутой ролик! Хотим ролики про JPA и Hibernate!)
@Name-mm2kx
@Name-mm2kx 5 жыл бұрын
Топ). По чаще бы такого годного контента)
@Lee_Je_Oh
@Lee_Je_Oh 4 жыл бұрын
Классные видео, очень содержательные!) Ты просто мощь!
@narimo2773
@narimo2773 4 жыл бұрын
JPA and Hibernate explanation will be very cool and useful.
@alterego3432
@alterego3432 5 жыл бұрын
Автор ты красавчик) лайк, и подписка с меня
@beka6336
@beka6336 4 жыл бұрын
Очень хочется послушать ваше "унылое бормотание" про HIBERNATE и JPA. Спасибо за видео
@artsbrand
@artsbrand 5 жыл бұрын
Лайкосик! Жги еще!
@_r00f
@_r00f 5 жыл бұрын
А можно через @EntityGraph заставить подгружать сразу ленивые сущности ниже уровнем(вся ветвь)? т.е. если бы у каждого коммента, были подкомменты. и мы хотим, что при загрузке мессаджа, у нас сразу загрузились и комменты и к каждому комменту подкомменты?
@viacheslavm5138
@viacheslavm5138 4 жыл бұрын
Просто - JavaGod. Спасибо, очень подробно и понятно
@vitalibirulia
@vitalibirulia 5 жыл бұрын
Спасибо за видео! Такой вопрос. Представим, что в комментариях есть булевое поле "active". Сразу после публикации, комментарий недоступен всем, он доступен только после одобрения модератором. В repo есть много объявлений методов доступа к данным, findAll, findByActiveTrue и т.п. Предположим, что есть разграничения видимости комментариев. В repo часть методов должна работать с комментариями, у которых active=true, остальная в остальных случаях. Есть ли возможность как-то определить базовый метод запроса и его расширять в остальных методах? Т.е, чтобы в каждом методе, который должен работать только c active=true, не нужно было бы это писать руками? Например в Django есть объект QuerySet. Т.е можно написать так: >>> query1 = Comment.objects.all() >>> query1.count() 10 >>> query2 = query1.filter(active=True) >>> query2.count() 5 и т.д. Т.е можно в одном методе создавать запрос query1 и возвращать объект этого запроса, во втором методе брать этот объект и расширять. Как такая задача реализуется в стеке Java, Spring? Т.е я считаю, что в каждом методе писать полный запрос как-то диковато. Много дублирования кода и всегда можно что-то забыть.
@victormog
@victormog 5 жыл бұрын
Длинные видео на youtube приносят больше денег - *не торопись!!!* :-)))
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Пилять, видос полчаса. И это я вырезал многое
@victormog
@victormog 5 жыл бұрын
@@letsCodeDru Это жеж *обучающее* видео! Пусть хоть час будет!
@victormog
@victormog 5 жыл бұрын
@Aa Gl Не надо впадать в крайности! Если будет ещё чуть более "сжато", то пользы от *видео* будет не больше, чем от commit`а на GitHub...
@victormog
@victormog 5 жыл бұрын
@Aa Gl Кстати, свой пост можно писать отдельно (он будет тем же шрифтом 😀)...
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Не хочу делать унылые курсы (коих большинство вокруг). Жизнь слишком коротка, чтобы киснуть на них. Когда придумаю удобный способ обучения - запилю курс. Но, скорее всего, на сторонней платформе.
@borismatashin5891
@borismatashin5891 4 жыл бұрын
это унылое бормотание даст больше чем всякое веселье) Ждем! Хотим!(может и есть уже, но такой инфы много не бывает)
@zagboris
@zagboris 2 жыл бұрын
Класс
@PavelRavvich
@PavelRavvich 4 жыл бұрын
Да про JPA и Hibernate надо просто более сложные случаи и может быть подключение разных кэшей и тд.
@PostMapping
@PostMapping 4 жыл бұрын
ОГРОМНОЕ СПАСИБО конечно, но к сожалению, я пока ничего не понимаю....
@mizantropoff
@mizantropoff 4 ай бұрын
а я не понял - мы добавили сообщениям автора, но АВТОРУ сообщения не добавили. Как это маппится?
@dmitrysomsin2117
@dmitrysomsin2117 4 жыл бұрын
Спасибо за урок! Появилось/тся по JPA видео?
@АнтонНарижный-ъ7ф
@АнтонНарижный-ъ7ф 2 жыл бұрын
Будет ли Хибернейт и JPA?
@ІванМостовий-у1в
@ІванМостовий-у1в 3 жыл бұрын
amazing!
@jonik_doit4463
@jonik_doit4463 5 жыл бұрын
Мм..вы всегда через конструктор инжектите? @Autowired можно указать прямо у свойства класса, или, помимо конструктора, через сеттер..Вы так привыкли делать? Или все таки опыт показал что лучше так, а не иначе? Спасибо!
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Можно и так и так. Хорошим тоном считается инжектить через конструктор - как минимум потому что легче тестировать
@antondoronin1261
@antondoronin1261 5 жыл бұрын
Агонь!
@Braklord
@Braklord 4 жыл бұрын
Даёшь Hibernate!
@andreyguzik2675
@andreyguzik2675 5 жыл бұрын
Полностью первый!
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Куда уж первее) в первую минуту после публикации ворвался)
@andreyguzik2675
@andreyguzik2675 5 жыл бұрын
Вот как засяду на выходных, уже три видео накопилось)
@KyivanEnjoyer
@KyivanEnjoyer 4 жыл бұрын
еще бы использовать интерфейсный бин для сервиса в идеале:)
@ДулатСагимбаев-о2ю
@ДулатСагимбаев-о2ю 4 жыл бұрын
у кого нибудь была проблема с тем, что при редактировании слетал автор сообщения ???
@Beatsmusic777
@Beatsmusic777 4 жыл бұрын
Пожалуйста сделай видео как решить LazyInitializationException. Как пользоваться графами в вашем коде он минимален как так?
@peshkosergey
@peshkosergey 5 жыл бұрын
Такой вопрос, а зачем тут вообще @Table аннотация? Тип она же сама по себе бесполезна без использования атрибутов, а тут собственно атрибуты и не используются
@sergeyserg2477
@sergeyserg2477 4 жыл бұрын
У кого ловится LazyInitializationException необходимо добавить аннотацию@ToString(of = {"id", "name"}) над классом User. Данный баг будет пофикшен в следующем видео.
@Lee_Je_Oh
@Lee_Je_Oh 4 жыл бұрын
В каком из видео проблема будет решена?
@alexandrguravskiy9985
@alexandrguravskiy9985 5 жыл бұрын
Super!
@jonik_doit4463
@jonik_doit4463 5 жыл бұрын
да да, DDD - наше всё))
@jonik_doit4463
@jonik_doit4463 5 жыл бұрын
Вот еще вопрос возник: вы используете в проде/для себя гугл гуаву?
@letsCodeDru
@letsCodeDru 5 жыл бұрын
До 8 java использовал активно, сейчас реже. На канале есть видос по гуаве
@LubluYoba
@LubluYoba 4 жыл бұрын
У кого ошибка при разлогине, она будет пофикшена в следующем видео Нужно в Main Controllere добавить else { model.addAttribute("messages", "[]"); }
@Elvolvers
@Elvolvers 4 жыл бұрын
Храни тебя господь! XD
@Ivan-oy9ub
@Ivan-oy9ub 4 жыл бұрын
Aминь!
@56scoch56
@56scoch56 5 жыл бұрын
Автолайк!
@Ivan-oy9ub
@Ivan-oy9ub 4 жыл бұрын
thanks
@vjotov
@vjotov 5 жыл бұрын
+1 JPA & Hibernate
@jonik_doit4463
@jonik_doit4463 5 жыл бұрын
14:00 можно избежать, если на фронте сделать JSON.parse, для разбора json'а как строки Но эта операция мб довольно тяжелой, если json оч большой)
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Зачем делать дополнительный вызов, если можно поручить это браузеру? Пускай парсит вместе со страницей
@mizantropoff
@mizantropoff 4 ай бұрын
@@letsCodeDru как минимум затем, что в 2024 году Ваш синтаксис [# th:utext...../] подчеркивается всеми цветами радуги и не работает
@gamerecords_site
@gamerecords_site 4 жыл бұрын
Хотим услышать унылое бормотание про hibernate JPA ))
@gamerecords_site
@gamerecords_site 4 жыл бұрын
Спасибо большое за уроки, я уже второй месяц по ним учусь )
@AnnaSmirnova1
@AnnaSmirnova1 5 жыл бұрын
Товарищи программисты!!! Кто-нибудь сталкивался с такой ошибкой???Куда копать? vue.runtime.esm.js:619 [Vue warn]: Error in v-on handler (Promise/async): "[object Object]" found in ---> at src/main/resources/static/js/components/messages/comment/CommentForm.vue at src/main/resources/static/js/components/messages/comment/CommentList.vue at src/main/resources/static/js/components/messages/MessageRow.vue at src/main/resources/static/js/pages/MessageList.vue at src/main/resources/static/js/pages/App.vue Запрос идет, после обновления страницы идет добавление комментария, но до этого выдает у метода POST 404
@АртёмКорякин-э2в
@АртёмКорякин-э2в 4 жыл бұрын
Ответ не нашли? Тоже такая проблема возникла.
@AnnaSmirnova1
@AnnaSmirnova1 4 жыл бұрын
@@АртёмКорякин-э2в переподключила зависимости и пересобрала проект
@АнтонНарижный-ъ7ф
@АнтонНарижный-ъ7ф 2 жыл бұрын
​@@АртёмКорякин-э2в Нашли решение?Такая же ошибка
@АнтонНарижный-ъ7ф
@АнтонНарижный-ъ7ф 2 жыл бұрын
Нашли решение?Такая же ошибка
@omerfarukerkul1197
@omerfarukerkul1197 5 жыл бұрын
18:42 this is the peak level of a coder. 🤣
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Now coders don't write the code, they just apply suggestions of IDE ;)
@lethargicaa
@lethargicaa 3 жыл бұрын
JPA. HIBERNATE.
@BieliaievVlas
@BieliaievVlas 5 жыл бұрын
А вот мне интересно послушать твоё унылое бормотание про JPA и Hibernate конкретно, и вот прямо тут я написал об этом в комментариях
@andreiivanov3683
@andreiivanov3683 5 жыл бұрын
слишком много кода и информации для одного видео
@АнтонНарижный-ъ7ф
@АнтонНарижный-ъ7ф 2 жыл бұрын
Делал всё, как в уроке и такие ошибки [Vue warn]: Error in v-on handler (Promise/async): "ReferenceError: comments is not defined" found in ---> at src/main/resources/static/js/components/comment/CommentForm.vue at src/main/resources/static/js/components/comment/CommentList.vue at src/main/resources/static/js/components/messages/MessageRow.vue at src/main/resources/static/js/pages/MessageList.vue at src/main/resources/static/js/pages/App.vue vue.runtime.esm.js:1897 ReferenceError: comments is not defined at Object.add (comment.js:6) at _callee4$ (store.js:85) at tryCatch (runtime.js:63) at Generator.invoke [as _invoke] (runtime.js:294) at Generator.next (runtime.js:119) at asyncGeneratorStep (router.js:16) at _next (router.js:16) at router.js:16 at new Promise () at router.js:16 В чём может быть проблема?
@АртемБеденко-о1ы
@АртемБеденко-о1ы 2 жыл бұрын
Удалось пофиксить?
@АнтонНарижный-ъ7ф
@АнтонНарижный-ъ7ф 2 жыл бұрын
@@АртемБеденко-о1ы Да, дальше будет решение проблемы, насколько я помню
@daurenaldabergenov5984
@daurenaldabergenov5984 4 жыл бұрын
+1 JPA & Hibernate
43 - Creating Fetch Plans with Entity Graphs
4:15
Viprav Programming
Рет қаралды 934
Their Boat Engine Fell Off
0:13
Newsflare
Рет қаралды 15 МЛН
#behindthescenes @CrissaJackson
0:11
Happy Kelli
Рет қаралды 27 МЛН
N+1 и дефолтные методы. Spring Boot + Webix
17:01
Optimization - N+1 Problem Solutions - Entity Graph
19:05
Miss Xing (邢老师)
Рет қаралды 9 М.
LazyInitializationException: What it is and the best way to fix it
9:57
Андрей Беляев - JPA-паззлеры (+Hibernate и Spring)
1:04:57
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 24 М.
SENIOR on JUNIOR Javascript Developer interview
26:35
BELOV
Рет қаралды 387 М.