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