Spring АйО
8.43K subscribers
304 photos
209 videos
403 links
Русскоязычное сообщество Spring-разработчиков.

Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy

Канал для общения: @spring_aio_chat
Download Telegram
⭐️ CascadeType.ALL и @ManyToMany

Использовать CascadeType.ALL для @ManyToMany не рекомендуется, так как это может привести к непредсказуемым результатам во время удаления JPA сущностей. Вместо этого следует использовать CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST и CascadeType.REFRESH.

Подробнее об этом рассказано в отдельном видео!

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥74
🗑 Сборка мусора в Java. Часть №1. Обзор сборщиков мусора и их различий

Команда Spring АйО перевела и адаптировала доклад "Garbage Collection in Java: The progress since JDK 8" Стефана Йоханссона (Stefan Johansson) с последнего Devoxx Belgium.

Доклад получилось поделить на две статьи. В первой вы узнаете об основах работы сборки мусора в Java, различных сборщиках мусора, а также об их особенностях, плюсах и минусах.

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/856468/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥125
Forwarded from Amplicode
👀 Ищем энтузиастов Spring Data JDBC!

В следующем мажорном релизе мы планируем расширить поддержку Spring Data, реализовав поддержку Spring Data JDBC и добавив возможности, которые ранее были доступны только для Spring Data JPA.

Придерживаясь CDD (Community Driven Development), команда Amplicode хочет услышать мнение разработчиков, которые на постоянной основе работают с Spring Data JDBC.

Если вы хотите:
– Принять участие в развитии продукта
– Поделиться своим опытом и рассказать о задачах и трудностях, с которыми сталкиваетесь, работая с Spring Data JDBC

то заполните короткую форму, и мы свяжемся с вами в ближайшее время!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍94👌1
⚡️ Liquibase теперь собирает статистику использования

Liquibase объявила о включении анонимного сбора данных в версии 4.30.0 и выше для пользователей Open Source версии.

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

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


Однако, если вы не хотите делиться статистикой, то можете её выключить, используя:
* Параметр --analytics-enabled=false в CLI
* Глобальную настройку liquibase.analytics.enabled: false в liquibase.properties файле
* Или переменную окружения LIQUIBASE_ANALYTICS_ENABLED=false

#breaking_news #liquibase
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯52👍2182🔥2
Какой системой версионирования баз данных пользуетесь в продакшене?
Anonymous Poll
24%
Flyway
64%
Liquibase
3%
Пользуюсь собственным велосипедом
9%
Не пользуюсь
1%
Другое, напишу в комментарии
👍84🔥4
🗓 Еженедельный дайджест №20

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Давайте использовать OpenTelemetry со Spring! показали преимущества использования OpenTelemetry для мониторинга и трассировки Spring Boot приложений

CascadeType.ALL и @ManyToMany представили видео, в котором показали, почему не рекомендуется использовать CascadeType.ALL для @ManyToMany

Сборка мусора в Java. Часть №1. Обзор сборщиков мусора и их различийузнали основы работы сборки мусора в Java, а также особенности различных сборщиков мусора

Liquibase теперь собирает статистику использованиярассказали о том, что начиная с версии Liquibase 4.30.0 и выше для пользователей Open Source версии сбор аннонимизированной статистики будет включен по умолчанию (как её выключить тоже рассказали :))

😌 @spring_aio
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍75👌2
🛡 Поддержка RestClient для OAuth2 в Spring Security 6.4

Команда Spring АйО перевела статью, в которой Steve Reisenberg рассказал о множестве полезных улучшений для работы с OAuth2 в Security 6.4.

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

📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/857664/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍197
🗑 Сборка мусора в Java. Часть №2. Прогресс со времени выхода JDK 8

Команда Spring АйО перевела и адаптировала доклад "Garbage Collection in Java: The progress since JDK 8" Стефана Йоханссона(Stefan Johansson) с последнего Devoxx Belgium.

Доклад получилось поделить на две статьи:
* В первой мы рассказали про основы работы сборки мусора в Java и различных сборщиках мусора
* Вторая часть посвящена сравнению производительности сборщиков и их прогрессу с момента выхода JDK 8

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/858166/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥76
👩‍💻 Spring Framework 6.2.0 уже доступен!

Вчера стала доступна новая минорная версия Spring Framework. Новое поколение Spring будет интегрировано в приложения на Spring Boot уже на следующей неделе с выходом Spring Boot 3.4.0.

Ключевые измнения, которые стоит отметить:

🔸 Добавлена возможность фоново инициализировать бины благодаря новому свойству bootstrap @Bean(bootstrap = BACKGROUND)
🔹 Реализована возможность создавать fallback бины для случаев, когда ни один бин объявленого типа не был предоставлен
🔸 Добавлена поддержка AssertJ для MockMvc

🔗 Ознакомиться с полным списком нововведений можно на GitHub.

#release #spring_framework
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍177👌1
⭐️ Axiom JDK – партнёр Spring АйО

Рады представить нового партнёра Spring АйО – компанию Axiom JDK! Многие знают Axiom JDK как поставщика платформы Java. Компания производит и поддерживает безопасный стек базовых технологий для разработки и исполнения Java приложений.

–––

На YouTube канале Axiom JDK вышел подкаст "Go vs Java: Кто победит на рынке разработки?" с участием двух экспертов сообщества Spring АйО: Рустамом Курамшиным и Михаилом Поливахой. Вместе с Олегом Козыревым (Senior Go Developer) ребята пытались выяснить:

– Как выбрать стек для нового проекта?
– В чём преимущества и недостатки Java и Go в enterprise-разработке?
– Как нанимают разработчиков и что ждёт новичков?
– В чём отличия подходов на Java и Go?

😉 Смотреть на YouTube
😄 Смотреть в VK
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥156😁4👎3
🚀 Вышла IntelliJ IDEA 2024.3

В новой версии IntelliJ IDEA:
▪️Добавлена возможность смотреть логическую структура кода, отображающую связи между компонентами проекта
▫️Улучшена функция HotSwap, позволяющая обновлять измененные классы без перезапуска приложений
▪️Реализована возможность генерировать Spring Data JPA методы в месте обращения к бину репозитория. Аналогичную функциональность мы уже видели в Amplicode
▫️Появилась возможность смотреть информацию о времени выполнения строк кода
▪️Упрощена отладка Kubernetes-приложений с помощью функции "Add Tunnel for Remote Debug"

Полный список изменений и улучшений доступен на сайте IntelliJ IDEA: https://www.jetbrains.com/ru-ru/idea/whatsnew/

P.S. В раздел "Главное" не попала ни одна из фич AI-ассистента. AI – всё!?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39🔥11👎76
🧪 Spring Framework 6.2.0: переопределение бинов в тестах

Недавно вышел Spring Framework 6.2, который включил в себя множество улучшений и новых возможностей. К одним из них можно отнести переопределение бинов в тестах.

В новом переводе от команды Spring АйО вы узнаете как можно использовать @TestBean, @MockitoBean и @MockitoSpyBean для переопределения бинов в тестах.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859430/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍93
🍃 Spring АйО на IT Community Day

На конференции IT Community Day выступили два наших эксперта из сообщества Spring АйО с докладами.

🎤 Михаил Поливаха представил доклад "Spring-AI с Gigachat. Интегрируем LLM в ваше приложение безболезненно", в котором рассказал о том, как внедрить мощные языковые модели в проекты на Spring и получить максимум пользы с минимальными трудностями.

🎤 Павел Кислов выступил с докладом "Spring Security ACL. Концепции гранулированного доступа в технологиях Java и почем фунт лиха", где раскрыл сложные, но важные аспекты настройки тонкого доступа в Spring Security ACL.

Мы подготовили видео-записи этих выступлений, чтобы вы могли детально познакомиться с темами:

😉 YouTube
- Выступление Михаила Поливахи
- Выступление Павла Кислова

😄 VK
- Выступление Михаила Поливахи
- Выступление Павла Кислова

🥰 RUTUBE
-
Выступление Михаила Поливахи
-
Выступление Павла Кислова
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥103
🔄 Версионирование эндпоинтов — это просто

Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium. 

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

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859910/
👍27🔥114
#ВопросЭксперту: почему в Spring Data JDBC отсутствует пагинация для native query?

Отвечает эксперт сообщества Spring АйО – Михаил Поливаха.

–––

Вопрос действительно интересный, и хотя такая возможность могла бы быть полезной, здесь есть свои нюансы и подводные камни. Давайте разберёмся, какие именно.

Начнём с того, что native query — это запросы, написанные на чистом SQL. В Hibernate их часто используют, когда возможностей HQL/JPQL недостаточно или когда нужны специфичные фичи для конкретной СУБД. Однако ни один ORM-фреймворк (будь то Spring Data JDBC, Hibernate или любой другой) не может на 100% знать структуру вашего нативного запроса — он может лишь предполагать. В таком запросе может быть что угодно, и ORM-фреймворк не всегда сможет корректно с ним работать.

Теперь представьте ситуацию: у нас есть Spring Data JPA native query для PostgreSQL и следующий набор тестов:


@Query(
value = "SELECT * FROM users FOR UPDATE SKIP LOCKED;",
nativeQuery = true
)
List<User> findBySomething(String name, Pageable pageable);

@Test
void testWithoutSort() {
userRepository.findBySomething("another", PageRequest.of(1, 10));
}

@Test
void testWithSort() {
userRepository.findBySomething("another", PageRequest.of(1, 10, Sort.by("name")));
}


Первый тест пройдёт успешно, а второй — нет. Почему?

Во втором случае передаётся параметр сортировки через Pageable. Но у jakarta.persistence.Query нет API для установки сортировки, хотя её всё же необходимо учесть. Другими словами, JPA-ровайдер не может нам тут помочь, т.к. он не предоставляет возможности прогнать параметры сортировки через свой API.

В итоге вставлять сортировку в native запрос приходится Spring Data JPA, и ей в буквальном смысле надо угадывать, куда же в запросе поставить ORDER BY. Да, Spring Data JPA может модифицировать ваши native query (существует даже API, позволяющий делать это динамически). Как вы можете догадаться, в данном случае Spring Data JPA не угадает с позиционированием.

Вот пример SQL, который будет сгенерирован в упавшем тесте


SELECT
*
FROM
users
OFFSET
? ROWS
FETCH NEXT ? ROWS ONLY FOR UPDATE SKIP LOCKED;
ORDER BY
FOR.name ASC -- НЕПРАВИЛЬНО! ORDER BY ЗДЕСЬ БЫТЬ НЕ ДОЛЖНО!


Проблема заключается в том, что Spring Data JPA вставляет ORDER BY в неподходящее место, что и приводит к ошибке.

С нативными запросами ORM-фреймворки, такие как Spring Data JPA и Hibernate, вынуждены догадываться, куда вставить OFFSET, LIMIT и ORDER BY. Чаще всего они угадывают верно, так как эти конструкции обычно находятся в конце запроса, но бывают исключения.

Таким образом, поддержка пагинации для нативных запросов — действительно полезная функция, но нужно понимать, что её реализация может привести к множеству багов, связанных с неверным определением позиции для OFFSET, LIMIT и ORDER BY.

Тем не менее, мне кажется, что эта фича стоит того, чтобы её внедрить! Делитесь своим мнением в комментариях, буду рад обсудить!

🖥 Исходный код поста на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3210🔥7
👀 От кода к смыслу: улучшенная панель Structure в IntelliJ IDEA 2024.3

Совсем недавно вышла IntelliJ IDEA 2024.3 – последний мажорный релиз IDE в этом году. И одним из самых важных нововведений этой версии стала улучшенная панель Structure.

Команда Spring АйО перевела статью Siva Katamreddy (Developer Advocate в JetBrains), в которой Siva рассказывает, как улучшенная панель помогает решать задачи, и делится историей создания этой функциональности.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/860510/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍1052
⭐️ Java Rock Stars Meetup

Уже через неделю 3 эксперта сообщества Spring АйО примут участие в Java Rock Stars Meetup!

Михаил Поливаха выступит с докладом "Spring Data JPA. Все сложнее, чем кажется"

В повседневной разработке enterprise-приложений при работе с базой данных доминирует JPA. В частности, как правило, люди используют Spring Data JPA. Хоть и этот фреймворк используется довольно активно, многие не понимают как именно Spring Data JPA работает с Hibernate: как Spring Data JPA менеджит сессии, как в одном приложении уживаются транзакции JPA-спецификации и транзакции самого Spring?


Павел Кислов выступит с докладом "Spring Security, как дела?"

Для многих spring security застыл в состоянии, в котором он был до момента выхода spring boot 3 и до spring security 6.0. Даже с этого момента произошло немало событий в жизни security-части фреймворка: вышел новый authorization server, в oauth2 добавили поддержку rest client, поменялось архитектурное видение разработчиков фреймворка и еще много всего. Это ли не повод синхронизировать головы и актуализировать понимание? Этим и займемся.


А Рустам Курамшин станет ведущим этого мероприятия.

Участие абсолютно бесплатное, главное успеть зарегистрироваться (количество мест ограничено)!

🗓 4 декабря (среда) 18:30 мск
📍 Лофт Casa Picassa, Бауманская ул., 11, стр. 8, зал Кандинский
❗️ Вход по регистрации
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍125
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥7👍61
👩‍💻 Что нового в Spring Boot 3.4

Недавно состоялся релиз Spring Framework 6.2, вслед за ним последовал релиз Spring Boot 3.4.

Команда Spring АйО подготовила перевод статьи Josh Long об основных изменениях и улучшениях, которые вошли в последний релиз.

📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/861182/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥76