Простой Telegram бот на Java и Spring Boot: Сохраняем данные в базу данных, используя Spring JPA

Sdílet
Vložit
  • čas přidán 20. 07. 2022
  • Простой Telegram бот на Java и Spring Boot: Сохраняем данные в базу данных, используя Spring JPA
    Код доступен тут: github.com/DmitrijsFinaskins/...
    В видео показано как добавить поддержку баз данных в проект и сохранять в таблицу данные о пользователях, которые пишут боту
    Если эта тема вам интересна, то пишите об этом в комментариях, тогда мы продолжим улучшение бота!
    Для тех кто хочет поддержать канал и стимулировать более частое появление видео:
    TON кошелек ton://transfer/EQDaRh6x4f9zH1pQzt8lhJPE70eltVzYB-phi83BunLg6X2y
    Ethereum кошелек: 0xfb654C91AC122e911db97435d491c3d919F6d8D5
    PayPal: www.paypal.com/paypalme/DFina...
    Группа ВК - rocketjava
    Telegram - t.me/DmitrijsFinaskins
    Мой сайт - dataguru.guide
    Twitter - / dfinaskins

Komentáře • 58

  • @mamahuhu3871
    @mamahuhu3871 Před rokem

    Дружище спасибо, все по делу, я уж было заскучал со spring MVC и html на пет проекте и твои видосы как глоток свежего воздуха) за уши не оттащишь как интересно!

  • @user-sh6kw1gp3q
    @user-sh6kw1gp3q Před 7 měsíci +14

    Может кому поможет. У меня автоматически не создавалась таблица и выходила такая ошибка:
    ERROR o.s.b.SpringApplication [main] Application run failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: javax/xml/bind/annotation/XmlElement
    Помогло добавление зависимости

    javax.xml.bind
    jaxb-api
    2.3.1

    • @nikolai.horetski
      @nikolai.horetski Před 4 měsíci +1

      спасибо тебе добрый человек))я два дня мучался, ничего не помогало)

  • @RomanGalkin-te4kp
    @RomanGalkin-te4kp Před měsícem

    Огроменное спасибо! Несколько месяцев было чувство, что погряз в теории и барахтаюсь на месте без продвижения на пути создания чего-то осязаемого. Блягодаря вашему туториалу, надеюсь что научусь делать ботов и запилю своего наконец!

  • @user-bn9wc8db6s
    @user-bn9wc8db6s Před 2 lety +3

    Крутяк!!! ТГ боты это прям глоток свежего воздуха!!!

  • @vikg2392
    @vikg2392 Před 2 lety +5

    Отличный видеокурс! Было бы здорово еще добавить кнопки с надписями (InlineKeyboardButton/InlineKeyboardMarkup). Записывать в БД - какое действие произвел пользователь.

  • @scutc84
    @scutc84 Před rokem

    отличное руководство, спасибо!

  • @spanish_eddie
    @spanish_eddie Před rokem +10

    Напишу сюда обязательную вещь. Если вы решите запустить все это дело на PostgreSQL , знайте, что эта БД создаст таблицу ТОЛЬКО после того как вы нажмёте /start (по крайней мере у меня так), а не во время запуска приложения. Иначе будете как я - возиться целый день, пытаясь подключить уже подключённую таблицу.

    • @yellowdevil825
      @yellowdevil825 Před rokem

      Спасибо, ты сэкономил мне кучу времени

    • @mamahuhu3871
      @mamahuhu3871 Před rokem

      благодарю

  • @user-sd6st7wf9u
    @user-sd6st7wf9u Před 2 lety

    Спасибо за отличный контент

  • @user-hm8wx2us8l
    @user-hm8wx2us8l Před 2 lety

    Отличный урок

  • @nomonjonrahimov498
    @nomonjonrahimov498 Před rokem

    Спасибо большое.

  • @techAi008
    @techAi008 Před 2 lety

    Большое спасибо. 👍👍👍👍
    будем ждать продолжения
    многофункциональное меню настроек
    i tranzaksiya conections

  • @SergeyAKa
    @SergeyAKa Před rokem +3

    Все хорошо рассказано, но нет никаких юнит тестов. Очень не хватает этого, т.к. возникает много вопросов по тестированию. По идее после каждого ролика о доработках хорошо бы ролик по тестированию этих доработок, а лучше сразу , разработку через тестирование (TDD)

  • @khanblogger7107
    @khanblogger7107 Před rokem

    perfect!!! 👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍

  • @Svarog093
    @Svarog093 Před rokem

    нормально, прокачался. Конечно был затык с авторизацией. Ребята у кого проблемы, внимательно заполняйте поля.

  • @M.Darsky
    @M.Darsky Před 2 lety +8

    как по мне, пора бы уже объяснить подписчикам что такое переменная окружения, какая это полезная штука, и хранить этот вредный токен там. где ему и место,))

    • @spark7978
      @spark7978 Před rokem +1

      и что это такое? как правильно задать вопрос хотя бы в гугл, объясни пж

    • @nmodonov
      @nmodonov Před rokem +3

      @@spark7978 как правильно задать вопрос хотя бы в гугл:
      выделяете мышкой фразу "что такое переменная окружения".
      Ctrl+C / Google / Ctrl+V / Enter
      Изучаете
      Потом "переменная окружения как использовать Java"
      Изучаете
      Потом "переменная окружения как использовать Spring"
      Изучаете

    • @mrprogre_avandy
      @mrprogre_avandy Před 8 měsíci

      главное когда добавите свою переменную окружения.. не важно, именно текущего пользователя или глобальную - перезагрузите кампухтер, иначе Java её не увидит!

  • @StopZombies
    @StopZombies Před rokem

    Не очень понятно что у юзера в телеге будет? Ничего же? просто отправленный /start передаст нам данные юзера ну т.е как бы никакой особо регистрации нет?

  • @user-ey8hl7iz9t
    @user-ey8hl7iz9t Před 9 měsíci

    У меня команды d sql не принимаются, все приконектилось, а команды не принимает use и дальше
    что это может быть

  • @user-lb4id6jf7g
    @user-lb4id6jf7g Před rokem

    Добрый день!Какие параметры будут, если база будет sql server ?

  • @alexanderalexander3920
    @alexanderalexander3920 Před 8 měsíci

    а как же raw SQL? сами не пишем sql запросы при программировании на джава?

  • @ConfidenceGold
    @ConfidenceGold Před měsícem

    замените findById на existsById, который сразу возвращает true или false. Так удобнее.

  • @howscwerna
    @howscwerna Před 5 měsíci

    Конечно видео интересные, но вопросов остается постоянно гораздо больше, чем понимания каких-то вещей. Хоть 1 файл конфигурации разберите подробнее, пожалуйста

  • @user-tq8wh3xw2k
    @user-tq8wh3xw2k Před 2 lety

    Как отправлять изображение, музыку с помощью бота. У меня выдает ошибку
    java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(Object)" because "this.objectMapper" is null
    Этот обэкт инициальзируеться в самом класе как new ObjectMapper(); . Класс находить в библиотеке

  • @grisha1894
    @grisha1894 Před rokem +3

    Ошибка в userRepository
    cloud not autowire. No beans of "UserRepository" type found

    • @user-xk2qp9hu2x
      @user-xk2qp9hu2x Před rokem

      как пофиксил?

    • @user-dk9tb6zo2r
      @user-dk9tb6zo2r Před rokem

      @@user-xk2qp9hu2x получилось пофиксить?

    • @user-dk9tb6zo2r
      @user-dk9tb6zo2r Před rokem

      А всё решил проблему! Надо скропировать pom файл с его репозитория. Скорее всего какие то зависимости устарели и не сочетаются

  • @user-ji2il6sh2b
    @user-ji2il6sh2b Před rokem +2

    Не подключаются зависимости mysql. Нужны какие то дополнительные действия?

    • @klaussr
      @klaussr Před 8 měsíci

      да, у меня так же было. решается путем добавления версии к зависимости в пом-файле. Версию взять из центрального мавен репозитория

  • @vadimmejinschii3442
    @vadimmejinschii3442 Před 6 měsíci

    где скачать .... где ??? после твоих видео больше вопросов чем ответов

  • @anzbeats909
    @anzbeats909 Před rokem +1

    Cannot resolve method 'getFirstName' in 'Long' Что не так???? 17:23

    • @JavaManuals
      @JavaManuals  Před rokem +2

      Посмотрите внимательно на очерёдность параметров в интерфейсе User Repository. Скорее всего у вас наоборот написано

    • @anzbeats909
      @anzbeats909 Před rokem +1

      @@JavaManuals спасибо, все получилось)) ошибка была очень банальная 😵

  • @Wansery
    @Wansery Před 9 měsíci +1

    Проверку наличия в базе данных юзера следовало бы проводить ещё до запуска метода регистрации... иначе зачем нам его запускать

    • @mrprogre_avandy
      @mrprogre_avandy Před 8 měsíci

      да, я вот так сделал
      if (!userRepository.existsById(update.getMessage().getChatId())) {
      registerUser(update.getMessage());
      }

  • @sergebel820
    @sergebel820 Před rokem +1

    а как развернуть нашу базу на удаленном сервере?

    • @cakeistrue
      @cakeistrue Před rokem

      Ну это смотря что за сервер. Потом в настройках соединения с бд прописать IP сервера

  • @user-jj6pp7ic3k
    @user-jj6pp7ic3k Před rokem

    вот вроде все как на видео, а у меня репозитория не находится системой. (делаю не все точ в точ, но логика та же
    )

    • @user-xk2qp9hu2x
      @user-xk2qp9hu2x Před rokem

      пофиксил?

    • @user-jj6pp7ic3k
      @user-jj6pp7ic3k Před rokem

      @@user-xk2qp9hu2x да уже пофиксил, и вообще, всё не по по курсу(

    • @MrVanchenso
      @MrVanchenso Před rokem

      Есть решение? null возвращает. версии другие

  • @dmitrygornev9366
    @dmitrygornev9366 Před rokem

    Я смотрю, не у одного меня инжекция UresRepository вызвала вопросы. Дмитрий, не могли бы Вы поподробнее объяснить этот момент.
    - UserRepository - это интерфейс, не класс
    - он не описан как bean, в нем отсутствует аннотация @Component
    Откуда этот бин появляется в контейнере спринга и далее инжектится в бота через @Autowired?
    Что-то тут у меня схема в голове пока не укладывается...
    Спасибо.

    • @MrVanchenso
      @MrVanchenso Před rokem

      Как то пофиксил? у меня ошибка.
      userRepository in ".model.UserRepository' that could not be found.
      The injection point has the following annotations:
      - @org.springframework.beans.factory.annotation.Autowired(required=true)

    • @rustamsaydam
      @rustamsaydam Před 10 měsíci

      анотацию @Repository надо интерфейсом поставил, вроде сработало для меня
      @@MrVanchenso

    • @SusanFoster-ok5ns
      @SusanFoster-ok5ns Před 5 měsíci

      @@rustamsaydam Привет. У меня такая же ошибка, уже битый час не могу решить. Подскажи, куда ты ставил аннотацию @Repository? Я её в самом интерфейсе поставил, результат нулевой

  • @khanblogger7107
    @khanblogger7107 Před rokem

    👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍

  • @ninamonna
    @ninamonna Před rokem

    Зачем логи в файл сохранять, а не выводить в консоль, это же не удобно, каждый раз лазить там и искать что не так пошло, тем более все одним цветом, в отличии от консоли, нет выделений никаких. МБ опытному разработчику это конечно на изи сразу все увидеть, а вот начинающим не очень

    • @TooGoolka
      @TooGoolka Před 9 měsíci

      потому что когда приложение на сервере, у тебя в консоль ничего не выйдет)