Spring boot + PostgreSQL + Liquibase + Testcontainers

  Рет қаралды 8,436

Sergey Labuzov

Sergey Labuzov

Жыл бұрын

В данном видео рассматривается создание простого Spring boot приложения и настройка подключения к СУБД PostgreSQL 13.3. Также рассматривается конфигурация Liquibase миграций и Testcontainers.
Весь код можно посмотреть в GItHub по следующей ссылке: github.com/SLabuzov/baseproject

Пікірлер: 57
@mishaprokopovich5253
@mishaprokopovich5253 Ай бұрын
отлично по шагам рассказал как настроить приложение, что для чего необходимо без лишних замудренных настроек, спасибо
@subanbektashbaltaev5787
@subanbektashbaltaev5787 Жыл бұрын
Круто! Рад что ютуб выдал тебя, когда у видоса было всего лишь 206 просмотров. Как раз тестконтейнеры изучал, а получил доп фишки всеравно )
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Очень приятно, что данный видос оказался полезным )
@bryanin
@bryanin 11 ай бұрын
Отличное видео! Взял на вооружение
@vip51000
@vip51000 7 ай бұрын
Включил колокольчик
@raccoon8230
@raccoon8230 8 ай бұрын
Спасибо!
@sergey_labuzov
@sergey_labuzov 8 ай бұрын
Не за что!
@ivankobyuk8385
@ivankobyuk8385 10 күн бұрын
Доброго дня ! 2:36 питання по необхідності робити файл для докер компоуз для БД. У мене на ноуті ОС - Linux/Ubuntu, БД (postgres) вже працює локально, а в терміналі вже створив відповідну БД з кредами. Я так розумію мені операції з докер компоузом не має сенсу робити. Вірно ?
@sergey_labuzov
@sergey_labuzov 10 күн бұрын
Добрый день! Да, все верно, нужно лишь подключение к БД. Каким способом Вы это реализуете абсолютно не важно
@ivankobyuk8385
@ivankobyuk8385 10 күн бұрын
@@sergey_labuzov дякую!
@T_soni
@T_soni 8 ай бұрын
даже в х2 медленно говоришь, удивил, ниче не скажешь😂
@sergey_labuzov
@sergey_labuzov 8 ай бұрын
Я старался 😀
@user-wx4cy6yw3f
@user-wx4cy6yw3f Жыл бұрын
А как база могла измениться, если в тесте был запущен только @Test void contextLoads() ?
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Спасибо за вопрос. Тестовый класс аннотирован @SpringBootTest. В данном случае будет поднят контекст, а значит и Liquibase начнет накатывать свои изменения.
@hurricane-rus
@hurricane-rus 2 ай бұрын
Смотрите видео внимательно! Как оказалось, в файле с миграцией --changeset и --rollback - это не просто комментарии, а управляющие команды Liquibase. Если их не добавить, Liquibase не увидит файл как миграцию.
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Добрый вечер. Для кого предназначен Ваш комментарий?)
@hurricane-rus
@hurricane-rus 2 ай бұрын
Для тех, кто пишет код вручную и обычно игнорирует то, что похоже на лишние комментарии - а потом удивляется, почему миграция не работает без этого "комментария")
@ninadan2204
@ninadan2204 Жыл бұрын
После установки переменных окружения, наверное, надо перегрузить компьютер?..
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Достаточно будет открыть новую сессию в командной строке (если мы говорим про ОС Windows)
@ninadan2204
@ninadan2204 Жыл бұрын
@@sergey_labuzov ну вот у меня спринг не видел новые переменные, пока не перегрузила (.
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Можете провести небольшой эксперимент на эту тему) Отредактируйте значения переменных окружения, например порт подключения к БД. Следующим шагом перегрузите IDE и запустите приложение. В логах должна будет появиться ошибка подключения к БД. В описании ошибки увидите, что подхватилось новое значение из переменных окружения.
@ninadan2204
@ninadan2204 Жыл бұрын
​@@sergey_labuzov Да, нужно только ide перегрузить. Похоже, что первый раз перегрузка ide не помогла, потому что было несколько проектов в разных окнах открыто и я не заметила, что не все закрыла ). Спасибо ).
@-202..5
@-202..5 9 ай бұрын
А нет ли ссылки на github?
@sergey_labuzov
@sergey_labuzov 9 ай бұрын
github.com/SLabuzov/baseproject (и в описании к этому видео есть ссылка.)
@m3hdim3hdi
@m3hdim3hdi 2 ай бұрын
Thank you so much but how can i use liquibase migrations in test container
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
in case you added testcontainers, liquibase will use this datasource when running tests.
@rainrainov4495
@rainrainov4495 7 ай бұрын
Как в liquibase создать primary key id с типом uuid и автогенерацией? Changelog файл yaml.
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
Добрый день. Попробуйте таким образом: type: uuid defaultValue: gen_random_uuid()
@rainrainov4495
@rainrainov4495 7 ай бұрын
@@sergey_labuzov Спасибо. Работает. А разницы нету в том как работает defaultValue и defaulValueComputed. Правильно я понимаю под копотом они вызывают одно и тоже?
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
@@rainrainov4495 в текущем случае нет разницы. Можете сформировать новую миграцию, но уже с defaulValueComputed и сравнить 2 DDL команды (defaultValue и defaulValueComputed) 🙂
@user-bz3wd8cm4y
@user-bz3wd8cm4y 7 ай бұрын
что это за плагин на 7:20? мне идея ничего не предлагает
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
Добрый день. Если не ошибаюсь, это Jakarta EE: Persistence ​(JPA)​ plugin
@mr.poryvai
@mr.poryvai 10 ай бұрын
Добрый день, DB не проходит тест, пишет FATAL: "fakeuser" does not exist, как быть intellij у меня CE версия, я скачал DB navigator, всё сделал согласно вашей инструкции)
@sergey_labuzov
@sergey_labuzov 10 ай бұрын
Добрый день! Спасибо за обратную связь. Буду рад помочь и разобраться в проблеме. Для этого попрошу Вас создать новый тикет на github, описать свой конфиг и по возможности приложить лог выполнения. Ссылка на раздел issues: github.com/SLabuzov/baseproject/issues
@mr.poryvai
@mr.poryvai 10 ай бұрын
@@sergey_labuzov Спасибо за отклик! пришел к решению вопроса двумя путями. Первый шаг походу был конфликт портов, так как был запущен сервер postgres и pgadmin (закрыл их), а второй момент был связан gradle(очень много ошибок в том числе и совместимости показывала ide) по этому пересоздал проект на maven, Spring выбрал 3.0.9 а не 3.1.2 и заработало)
@sergey_labuzov
@sergey_labuzov 10 ай бұрын
Не за что! Мне и самому интересно было разобраться в причине) Мне кажется причиной стало именно первый шаг (работающий postgresql на порту 5432). Вот второй шаг вызывает у меня небольшое недоверие, так как ранее Вы писали о том, что не проходит тест. А это значит, что все необходимые зависимости были подгружены корректно и без проблем с совместимостью. В любом случае, Вам респект, что уделили время и силы на поиски решения описанной выше проблемы.
@rainrainov4495
@rainrainov4495 7 ай бұрын
Добрый день! Как установить enum тип в liquibase yaml? Используемая база данных postgresql.
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
Добрый день! Не совсем понял, что необходимо сделать. Предлагаю для более детального описания задачи перейти в гит и создать новый issue. github.com/SLabuzov/baseproject/issues
@rainrainov4495
@rainrainov4495 7 ай бұрын
@@sergey_labuzov Спасибо за то что ответили. Я уже разобрался. Enum liquibase не поддерживает напрямую поэтому нужно использовать ту поддержку которая предоставляется конкретной базай данных, используя в yaml sql запрос для создания enum типа в postgres.
@rainrainov4495
@rainrainov4495 7 ай бұрын
@@sergey_labuzovЧто лучше использовать для MongoDb liquibase или Mongock?
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
Для MongoDb мне больше нравится Mongock. Но это совсем не означает, что Liquibase для MongoDb не подходит. Ответил максимально уклончиво) Лично я для MongoDb использую Mongock.
@rainrainov4495
@rainrainov4495 7 ай бұрын
@@sergey_labuzov Спасибо за ответ. Среди тутрриалов Java почемуто совсем мало уделяется внимания миграциям, лишь вскольз упоминаются. Mongock вообще пару видио и то в них только объясняется как заполнить данные а не как создовать document. Ну или я плохо ищу. По другим темам полно материала.
@mr.poryvai
@mr.poryvai 10 ай бұрын
Друзья, кто может подсказать, как задать переменные среды на Мак, прочитал несколько статьей на эту тему) понял что первый шаг это открыть файл .zshrc и в конце его указать переменные export BASEPROJECT_DATABASE_USER=fakeuser я так понимаю нужно еще PATH задать, вот тут уже потеря бойца пошла) Кто может укажите примеры. Заранее спасибо!) Временная переменная не спасает нужна постоянная)
@smartcompany11
@smartcompany11 10 ай бұрын
В этом нет смысла, если вы несколько проектов разрабатываете у себя на компьютере.
@sergey_labuzov
@sergey_labuzov 10 ай бұрын
Попробуйте следующий вариант: 1. Необходимо найти и открыть файл [~/.bash_profile] 2. Добавить переменные в формате export [variable_name]=[variable_value] Пример: exoprt BASEPROJECT_DATABASE_USER=fakeuser 3. После добавления всех переменных сохраняем и закрываем файл. 4. Обновить окружение командой [source ~/.bash-profile]
@mr.poryvai
@mr.poryvai 10 ай бұрын
@@sergey_labuzov Да, спасибо, странно с первого раза не с работало, когда прописывал, сейчас работают переменные) Теперь материал урока выполнил на 100%. Спасибо за поданный материал
@user-eo4qh4ou8x
@user-eo4qh4ou8x Жыл бұрын
У меня не работает( Пишет креды плохие
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Добрый день! А что конкретно не работает?
@user-eo4qh4ou8x
@user-eo4qh4ou8x Жыл бұрын
@@sergey_labuzov Я создал образ с postgres-ом, начинаю стучаться к нему с своими данными "user", "password" а он говорит что то на непонятных символах. Думал, если сменю на цифры, они же в любой кодировке такие, то будет норм, но нет. В общем локально БД работает, а в докере нет. Спасибо, что написал
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Нужно разобраться) При запуске в докере нужно учесть следующий момент: если локальная БД запущена, тогда порт указываем новый, например 5433 ports: - '5433:5432' Кстати, можешь в гите открыть ISSUE и прикрепить скрины, тогда точно разберемся в чем проблемка) Ссылка на гит есть в описании к этому видео
@user-wx4cy6yw3f
@user-wx4cy6yw3f Жыл бұрын
@@user-eo4qh4ou8x твоя проблема в версии docker-compose (version: "3" ) у меня была 2я - пока не изменил не запускалось / проверить из консоли можно так: docker-compose --version
@sergey_labuzov
@sergey_labuzov Жыл бұрын
Это не совсем корректно. В примере я использовал Compose file 3 версии. Для этого необходима версия Docker Engine 1.13.1+ и выше. Как пример, на моем окружении результатом выполнения команды "docker-compose --version" будет "Docker Compose version v2.15.1". Версию Docker Engine нужно смотреть командой "docker version".
Spring Boot Testcontainers - Integration Testing made easy!
33:31
THEY WANTED TO TAKE ALL HIS GOODIES 🍫🥤🍟😂
00:17
OKUNJATA
Рет қаралды 3,6 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 6 МЛН
Liquibase. Миграции баз данных. Быстрый старт
28:01
Михаил Киселев
Рет қаралды 6 М.
Testcontainers и Spring Boot 3.1
19:47
Уголок сельского джависта
Рет қаралды 7 М.
LiquiBase With SpringBoot For Beginners
50:05
KB Tutorials
Рет қаралды 14 М.
Сергей Егоров - Testcontainers: Год спустя
1:00:00
JPoint, Joker и JUG ru
Рет қаралды 13 М.
Spring Cloud goes Cloud
2:10:21
Aleksandr Barmin
Рет қаралды 32 М.
THEY WANTED TO TAKE ALL HIS GOODIES 🍫🥤🍟😂
00:17
OKUNJATA
Рет қаралды 3,6 МЛН