Spring по верхам: База данных REST-сервиса
HTML-код
- Опубликовано: 5 фев 2025
- В серии коротких роликов "Spring по верхам" я вкратце рассказываю о применении экосистемы Spring при разработке приложений на платформе Java.
Третий ролик посвящён использованию реляционных СУБД при разработке REST-сервисов.
Репозиторий проекта: github.com/ale...
Паблик в VK: public2...
Канал в Telegram: t.me/+TZCuO38v...
#java #spring #flywaydb #testcontainers #postgresql
Спасибо за урок, было интересно.
Благодарность за труд, окно закрывает часть информации(
Очень крутые обучалки для начинающих, спасибо огромное))))))
все видео суперполезные, лайк
понравилось, ставлю лайк =)
о боже можно больше про докер! вы его упомянули в 3:20
Будут ли видео про джава и докер, джава и брокер сообщений, микросервисы. Нравится ваш стиль видеоуроков
У меня есть в планах освещение большого количества тем, в т.ч. и вышеуказанных, времени хватило бы)
Спасибо! ) Очень полезно. Планируется ли следующее видео и если да, то на какую тему?
Да, следующее видео будет, посвящено оно будет Spring Security
Довольно специфический выбор framework'а для работы с DB - мало кто в наше время его использует в Prod'е. Конечно, понятно нежелание вступать в HolyWar по поводу Hibernate'а, но по крайней мере Spring Data JDBC был бы, мне кажется, более оптимальным компромиссом.
С одной стороны, материалов по JPA/Hibernate достаточно много, а я пытаюсь претендовать хоть на какую-то уникальность, с другой - Spring JDBC реально удобный (и используемый в проде) инструмент, когда речь идёт о работе с реляционными базами данных и оптимальном использовании SQL-запросов. Плюс JDBC максимально нагляден и порог вхождения в него на мой взгляд ниже, чем у тех же JPA/Hibernate.
а мне нравится Spring JDBC. В относительно простых сервисах он вполне органично смотрится. Из плюсов: полный контроль над запросами, никакой магии. Понятно, что это же можно смело записать и в недостатки, ибо полный контроль достигается прописыванием ручками логики запросов и гребаного мапера. Но, повторюсь, в простых ситуациях вполне себе нормальный подход )
@@sergeyshcherbakov3653 Самое смешное, что упомянутый выше Hibernate работает по большей части только для простых ситуаций. Как только выходишь за рамки, то нужно быть или ГУРУ его, или иметь понятную схему взаимодействия. Для этих случаев как раз всевозможные JDBC лучше подходят.
@shurik_codes
В целом интересно, доходчиво. Я узнал несколько новых моментов, с которыми не сталкивался ранее в силу специфики и принятых flow разработки у нас.
Автор, безусловно, молодец - умеет рассказать понятно и интересно о непростых для простого человека вещах. Считаю, что нужно продолжать делиться опытом и знаниями далее.
Несколько шероховатостей...
Неплохо было бы удостовериться, что сервис рабочий после внесения правок. Синтетический интеграционный тест запускается, а сервис не поднимается.
Наверное, также стоит упомянуть, что использование тестконтейнеров подразумевает установленный и запущенный на PC Docker.
какой сервис?
"Неплохо было бы удостовериться, что сервис рабочий после внесения правок. Синтетический интеграционный тест запускается, а сервис не поднимается. "
"Наверное, также стоит упомянуть, что использование тестконтейнеров подразумевает установленный и запущенный на PC Docker." - Наверное, учитывая, в таком случае что вы упомянули, что следует упомянуть также то что вы упомянули, не менее важно упомянуть и то, что не использование тестконтейнеров подразумевает обратное
Почему предпочитаете использовать JdbcOperations, а не NamedParameterJdbcTemplate?
Я использовал JdbcOperations в качестве примера. На практике я чаще использую NamedParameterJdbcTemplate
Не уловил. Здесь в итоге не используется FlyWay? Правильно понял? Спасибо за классный контент!)
Используется, схема описывается на 15:24 , Flyway её автоматически подхватывает
Используется. Если допилить сервис до рабочего состояния после правок в части конфигурирования постгри, то можно увидеть, что создастся таблица флайвея с записью выполненной миграции данных.
@@ГенрихАвдеев-ь9з Какой сервис?
"Если допилить сервис до рабочего состояния после правок в части конфигурирования постгри..."
Правильно ли я понял, что на компе должен быть установлен docker desktop? А то у меня тесты не проходили, как у тебя в конце видео. Как только установил и запустил докер, все заработало. Я просто до этого докером не пользовался, поэтому не знаю что-там по чем
Да, всё верно, нужен Docker, т.к. база разворачивается в нём при помощи Testcontainers
"Правильно ли я понял, что на компе должен быть установлен docker desktop? " - нет, неправильно, не должен (можно не использовать Testcontainers)
@@Leon-do8tf в случае как у автора ролика докер обязателен
Всем привет, столкнулся с проблемой Error creating bean with name 'jdbcOperationsTaskRepository' , может кто-то ее решил , код и pom как на видео
Docker установлен?
У меня была такая ошибка, включил докер, подключил postgresql внутри intellij idea по стандартному логину паролю
потом в pom.xml добавил в зависимости для flyway, и все автотесты проходят
org.flywaydb
flyway-database-postgresql
сам лог был "Unsupported Database: PostgreSQL 14.15"
кто отчищает db после тестов? Аннотация @Transactional или как?
@Sql("/sql/tasks_rest_controller/test_data.sql")
@Transactional
@SpringBootTest
@AutoConfigureMockMvc(printOnlyOnFailure = false)
class TaskRestControllerIT {
@Transactional, после завершения теста транзакция автоматически откатывается