This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня не для всех weekend, но всё же #weekend_memes 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
😁47🔥9👍5❤3👎1
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Как жить без IntelliJ IDEA? Часть 2. Поддержка Spring – посмотрели на альтернативы IntelliJ IDEA Ultimate в части поддержки Spring и провели их анализ
– Создание Deep Stubs в Mockito – познакомились с мокированием целой цепочки вызовов
– Действительно ли ИИ-помощники экономят время разработчиков? – узнали, насколько полезен ИИ для разработчкиков в наши дни
– Исключение строк из уникальных индексов – рассмотрели способ включения только нужных строк при создании индекса БД
– AI-ассистент со Spring AI (Часть 2) – ознакомились со второй частью серии статей про внедрение AI-ассистента с помощью Spring AI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5❤4
Команда Spring АйО перевела статью, раскрывающую преимущества использования OpenTelemetry для мониторинга и трассировки Spring Boot приложений.
В статье показано, как интеграция с OpenTelemetry с использованием OTLP и других компонентов позволяет легко встроить стандартизированный сбор метрик, логов и трассировок в экосистему Spring.
📚Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/855868/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥6❤4
@ManyToManyИспользовать
CascadeType.ALL для @ManyToMany не рекомендуется, так как это может привести к непредсказуемым результатам во время удаления JPA сущностей. Вместо этого следует использовать CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST и CascadeType.REFRESH. Подробнее об этом рассказано в отдельном видео!
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Никогда не используй CascadeType.ALL вместе с @ManyToMany | Amplicode
#Amplicode #Spring #SpringBoot #SpringData #JPA #Hibernate #IntelliJ #Java #Kotlin
Использовать CascadeType.ALL для @ManyToMany не рекомендуется, так как это может привести к непредсказуемым результатам во время удаления JPA сущностей. Вместо этого следует…
Использовать CascadeType.ALL для @ManyToMany не рекомендуется, так как это может привести к непредсказуемым результатам во время удаления JPA сущностей. Вместо этого следует…
👍23🔥7❤4
Команда 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🔥12❤5
Forwarded from Amplicode
В следующем мажорном релизе мы планируем расширить поддержку Spring Data, реализовав поддержку Spring Data JDBC и добавив возможности, которые ранее были доступны только для Spring Data JPA.
Придерживаясь CDD
Если вы хотите:
– Принять участие в развитии продукта
– Поделиться своим опытом и рассказать о задачах и трудностях, с которыми сталкиваетесь, работая с Spring Data JDBC
то заполните короткую форму, и мы свяжемся с вами в ближайшее время!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍9❤4👌1
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👍21⚡8❤2🔥2
Какой системой версионирования баз данных пользуетесь в продакшене?
Anonymous Poll
24%
Flyway
64%
Liquibase
3%
Пользуюсь собственным велосипедом
9%
Не пользуюсь
1%
Другое, напишу в комментарии
👍8❤4🔥4
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Давайте использовать OpenTelemetry со Spring! – показали преимущества использования OpenTelemetry для мониторинга и трассировки Spring Boot приложений
– CascadeType.ALL и @ManyToMany – представили видео, в котором показали, почему не рекомендуется использовать CascadeType.ALL для
@ManyToMany– Сборка мусора в Java. Часть №1. Обзор сборщиков мусора и их различий – узнали основы работы сборки мусора в Java, а также особенности различных сборщиков мусора
– Liquibase теперь собирает статистику использования – рассказали о том, что начиная с версии Liquibase 4.30.0 и выше для пользователей Open Source версии сбор аннонимизированной статистики будет включен по умолчанию
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍7❤5👌2
Команда 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👍19❤7
Команда 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🔥7❤6
Вчера стала доступна новая минорная версия Spring Framework. Новое поколение Spring будет интегрировано в приложения на Spring Boot уже на следующей неделе с выходом Spring Boot 3.4.0.
Ключевые измнения, которые стоит отметить:
🔸 Добавлена возможность фоново инициализировать бины благодаря новому свойству bootstrap
@Bean(bootstrap = BACKGROUND)🔹 Реализована возможность создавать fallback бины для случаев, когда ни один бин объявленого типа не был предоставлен
🔸 Добавлена поддержка AssertJ для MockMvc
#release #spring_framework
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍17❤7👌1
Рады представить нового партнёра Spring АйО – компанию Axiom JDK! Многие знают Axiom JDK как поставщика платформы Java. Компания производит и поддерживает безопасный стек базовых технологий для разработки и исполнения Java приложений.
–––
На YouTube канале Axiom JDK вышел подкаст "Go vs Java: Кто победит на рынке разработки?" с участием двух экспертов сообщества Spring АйО: Рустамом Курамшиным и Михаилом Поливахой. Вместе с Олегом Козыревым (Senior Go Developer) ребята пытались выяснить:
– Как выбрать стек для нового проекта?
– В чём преимущества и недостатки Java и Go в enterprise-разработке?
– Как нанимают разработчиков и что ждёт новичков?
– В чём отличия подходов на Java и Go?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥15❤6😁4👎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👎7❤6
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Поддержка RestClient для OAuth2 в Spring Security 6.4
– Сборка мусора в Java. Часть №2. Прогресс со времени выхода JDK 8
– Spring Framework 6.2.0 уже доступен
– Вышла IntelliJ IDEA 2024.3
– Amplicode выпустил новый релиз 2024.2.6-EAP
– Axiom выпустил подкаст "Java или Go, чай с чабрецом или банановый раф?"
– Joker опубликовал отчётный ролик о прошедшей конференции
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡17👍14🔥9
Недавно вышел 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👍9❤3
На конференции IT Community Day выступили два наших эксперта из сообщества Spring АйО с докладами.
🎤 Михаил Поливаха представил доклад "Spring-AI с Gigachat. Интегрируем LLM в ваше приложение безболезненно", в котором рассказал о том, как внедрить мощные языковые модели в проекты на Spring и получить максимум пользы с минимальными трудностями.
🎤 Павел Кислов выступил с докладом "Spring Security ACL. Концепции гранулированного доступа в технологиях Java и почем фунт лиха", где раскрыл сложные, но важные аспекты настройки тонкого доступа в Spring Security ACL.
Мы подготовили видео-записи этих выступлений, чтобы вы могли детально познакомиться с темами:
- Выступление Михаила Поливахи
- Выступление Павла Кислова
- Выступление Михаила Поливахи
- Выступление Павла Кислова
- Выступление Михаила Поливахи
- Выступление Павла Кислова
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥10❤3
🔄 Версионирование эндпоинтов — это просто
Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium.
В докладе автор объясняет, зачем нужно версионировать API, и подробно сравнивает различные подходы к реализации этой задачи.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859910/
Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium.
В докладе автор объясняет, зачем нужно версионировать API, и подробно сравнивает различные подходы к реализации этой задачи.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/859910/
👍27🔥11❤4
Отвечает эксперт сообщества 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")));
}
Первый тест пройдёт успешно, а второй — нет. Почему?
В итоге вставлять сортировку в 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.Тем не менее, мне кажется, что эта фича стоит того, чтобы её внедрить! Делитесь своим мнением в комментариях, буду рад обсудить!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤10🔥7