Spring по верхам: База данных REST-сервиса

Поделиться
HTML-код
  • Опубликовано: 5 фев 2025
  • В серии коротких роликов "Spring по верхам" я вкратце рассказываю о применении экосистемы Spring при разработке приложений на платформе Java.
    Третий ролик посвящён использованию реляционных СУБД при разработке REST-сервисов.
    Репозиторий проекта: github.com/ale...
    Паблик в VK: public2...
    Канал в Telegram: t.me/+TZCuO38v...
    #java #spring #flywaydb #testcontainers #postgresql

Комментарии • 32

  • @artyomzolotoverkhov8468
    @artyomzolotoverkhov8468 8 месяцев назад +2

    Спасибо за урок, было интересно.

  • @Терентий-ю4ъ
    @Терентий-ю4ъ Год назад +3

    Благодарность за труд, окно закрывает часть информации(

  • @ДенисФедоров-ш2ь
    @ДенисФедоров-ш2ь Год назад +2

    Очень крутые обучалки для начинающих, спасибо огромное))))))

  • @kirilluroven8491
    @kirilluroven8491 Год назад +2

    все видео суперполезные, лайк

  • @dmaberlin
    @dmaberlin Год назад +2

    понравилось, ставлю лайк =)

  • @leralerua3835
    @leralerua3835 Год назад +3

    о боже можно больше про докер! вы его упомянули в 3:20

  • @AB-ku1su
    @AB-ku1su 2 года назад +4

    Будут ли видео про джава и докер, джава и брокер сообщений, микросервисы. Нравится ваш стиль видеоуроков

    • @shurik_codes
      @shurik_codes  2 года назад +2

      У меня есть в планах освещение большого количества тем, в т.ч. и вышеуказанных, времени хватило бы)

  • @АлександрБугримов-о1е

    Спасибо! ) Очень полезно. Планируется ли следующее видео и если да, то на какую тему?

    • @shurik_codes
      @shurik_codes  2 года назад +2

      Да, следующее видео будет, посвящено оно будет Spring Security

  • @Selavy82
    @Selavy82 Год назад +1

    Довольно специфический выбор framework'а для работы с DB - мало кто в наше время его использует в Prod'е. Конечно, понятно нежелание вступать в HolyWar по поводу Hibernate'а, но по крайней мере Spring Data JDBC был бы, мне кажется, более оптимальным компромиссом.

    • @shurik_codes
      @shurik_codes  Год назад +2

      С одной стороны, материалов по JPA/Hibernate достаточно много, а я пытаюсь претендовать хоть на какую-то уникальность, с другой - Spring JDBC реально удобный (и используемый в проде) инструмент, когда речь идёт о работе с реляционными базами данных и оптимальном использовании SQL-запросов. Плюс JDBC максимально нагляден и порог вхождения в него на мой взгляд ниже, чем у тех же JPA/Hibernate.

    • @sergeyshcherbakov3653
      @sergeyshcherbakov3653 Год назад

      а мне нравится Spring JDBC. В относительно простых сервисах он вполне органично смотрится. Из плюсов: полный контроль над запросами, никакой магии. Понятно, что это же можно смело записать и в недостатки, ибо полный контроль достигается прописыванием ручками логики запросов и гребаного мапера. Но, повторюсь, в простых ситуациях вполне себе нормальный подход )

    • @ГенрихАвдеев-ь9з
      @ГенрихАвдеев-ь9з 11 месяцев назад

      @@sergeyshcherbakov3653 Самое смешное, что упомянутый выше Hibernate работает по большей части только для простых ситуаций. Как только выходишь за рамки, то нужно быть или ГУРУ его, или иметь понятную схему взаимодействия. Для этих случаев как раз всевозможные JDBC лучше подходят.

  • @ГенрихАвдеев-ь9з
    @ГенрихАвдеев-ь9з 11 месяцев назад

    @shurik_codes
    В целом интересно, доходчиво. Я узнал несколько новых моментов, с которыми не сталкивался ранее в силу специфики и принятых flow разработки у нас.
    Автор, безусловно, молодец - умеет рассказать понятно и интересно о непростых для простого человека вещах. Считаю, что нужно продолжать делиться опытом и знаниями далее.
    Несколько шероховатостей...
    Неплохо было бы удостовериться, что сервис рабочий после внесения правок. Синтетический интеграционный тест запускается, а сервис не поднимается.
    Наверное, также стоит упомянуть, что использование тестконтейнеров подразумевает установленный и запущенный на PC Docker.

    • @Leon-do8tf
      @Leon-do8tf 11 месяцев назад

      какой сервис?
      "Неплохо было бы удостовериться, что сервис рабочий после внесения правок. Синтетический интеграционный тест запускается, а сервис не поднимается. "
      "Наверное, также стоит упомянуть, что использование тестконтейнеров подразумевает установленный и запущенный на PC Docker." - Наверное, учитывая, в таком случае что вы упомянули, что следует упомянуть также то что вы упомянули, не менее важно упомянуть и то, что не использование тестконтейнеров подразумевает обратное

  • @КонстантинМашков-т2т
    @КонстантинМашков-т2т 2 года назад +1

    Почему предпочитаете использовать JdbcOperations, а не NamedParameterJdbcTemplate?

    • @shurik_codes
      @shurik_codes  2 года назад +2

      Я использовал JdbcOperations в качестве примера. На практике я чаще использую NamedParameterJdbcTemplate

  • @aleksey9059
    @aleksey9059 Год назад

    Не уловил. Здесь в итоге не используется FlyWay? Правильно понял? Спасибо за классный контент!)

    • @shurik_codes
      @shurik_codes  Год назад +1

      Используется, схема описывается на 15:24 , Flyway её автоматически подхватывает

    • @ГенрихАвдеев-ь9з
      @ГенрихАвдеев-ь9з 11 месяцев назад

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

    • @Leon-do8tf
      @Leon-do8tf 11 месяцев назад

      @@ГенрихАвдеев-ь9з Какой сервис?
      "Если допилить сервис до рабочего состояния после правок в части конфигурирования постгри..."

  • @Maksim-hn3ln
    @Maksim-hn3ln Год назад +1

    Правильно ли я понял, что на компе должен быть установлен docker desktop? А то у меня тесты не проходили, как у тебя в конце видео. Как только установил и запустил докер, все заработало. Я просто до этого докером не пользовался, поэтому не знаю что-там по чем

    • @shurik_codes
      @shurik_codes  Год назад +1

      Да, всё верно, нужен Docker, т.к. база разворачивается в нём при помощи Testcontainers

    • @Leon-do8tf
      @Leon-do8tf 11 месяцев назад

      "Правильно ли я понял, что на компе должен быть установлен docker desktop? " - нет, неправильно, не должен (можно не использовать Testcontainers)

    • @artyomzolotoverkhov8468
      @artyomzolotoverkhov8468 8 месяцев назад

      @@Leon-do8tf в случае как у автора ролика докер обязателен

  • @pavelgurevich4018
    @pavelgurevich4018 10 месяцев назад

    Всем привет, столкнулся с проблемой Error creating bean with name 'jdbcOperationsTaskRepository' , может кто-то ее решил , код и pom как на видео

    • @shurik_codes
      @shurik_codes  10 месяцев назад

      Docker установлен?

    • @mishanya829
      @mishanya829 2 месяца назад

      У меня была такая ошибка, включил докер, подключил postgresql внутри intellij idea по стандартному логину паролю
      потом в pom.xml добавил в зависимости для flyway, и все автотесты проходят
      org.flywaydb
      flyway-database-postgresql
      сам лог был "Unsupported Database: PostgreSQL 14.15"

  • @Leon-do8tf
    @Leon-do8tf 11 месяцев назад

    кто отчищает db после тестов? Аннотация @Transactional или как?
    @Sql("/sql/tasks_rest_controller/test_data.sql")
    @Transactional
    @SpringBootTest
    @AutoConfigureMockMvc(printOnlyOnFailure = false)
    class TaskRestControllerIT {

    • @shurik_codes
      @shurik_codes  11 месяцев назад

      @Transactional, после завершения теста транзакция автоматически откатывается