#spring_data — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #spring_data, aggregated by home.social.
-
Один ко многим в Java: когда коллекция в родителе оправдана, а когда — нет
Реляционная модель хранит FK на стороне дочерней таблицы. В Java у нас два способа отразить эту связь: коллекция в родительской сущности ( @OneToMany / List) или ссылка в дочерней ( @ManyToOne / long parentId). Выбор между ними влияет на поведение при записи — и именно здесь большинство решений принимаются без достаточного обоснования. Тест, который даёт однозначный ответ Влад Михалча формулирует так: ассоциация @ManyToOne является наиболее естественным способом отображения связи «один ко многим» в базе данных и, как правило, наиболее эффективной альтернативой. Практический критерий: если убрать коллекцию и заменить её отдельным запросом, какое бизнес-правило перестанет работать? Если ответ — «никакое, просто список будет получаться отдельным запросом» — коллекция не нужна как часть модели. Если ответ — «нарушится инвариант» — коллекция оправдана. Типичные случаи:
https://habr.com/ru/articles/1050776/
#java #jpa #hibernate #spring #spring_data #jdbc #onetomany #manytoone #ddd #aggregate
-
[Перевод] Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные
В проде бывает так, что одна и та же операция часто повторяется : клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграла сообщение. Вспоминаем про идемпотентность - это правило «повтор не должен создавать новый платёж/заказ». Чтобы отличать повтор от новой операции, используют idempotency key (ключ идемпотентности) . Это обычная уникальная строка-идентификатор, которую клиент или апстрим отправляет вместе с запросом (часто в заголовке Idempotency-Key ). Сервис сохраняет этот ключ у себя и связывает с результатом операции. Далее приходит запрос с тем же ключом - сервис не выполняет бизнес-действие второй раз, а дедуплицирует на основе ключа идемпотентности. Но так ли всё просто? Многолетний опыт анализа инцидентов показал, что на практике большое количество систем всё же регулярно допускают дублирования, хотя делали всё по методичке. В новом переводе от команды Spring АйО рассмотрим не самые очевидные ошибки и то, о чём стоит подумать, при реализации идемпотентного API.
https://habr.com/ru/companies/spring_aio/articles/1043208/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] Команда Spring о Spring Framework 7 и Spring Boot 4
В новом переводе от команды Spring АйО рассмотрим выход Spring Boot 4 и Spring Framework 7. InfoQ взяли интервью у core команды Spring с целью узнать, куда движется самая популярная в Java экосистема. Spring Boot 4 модуляризировал автоконфигурацию. Теперь при запуске проверяется меньше классов в classpath, а uber-jar будет более компактным: будут подключаться только нужные модули. Параллельно Spring Boot 4 переходит на Jackson 3, но добавлен модуль совместимости с Jackson 2, потому что экосистема ещё догоняет. Spring Framework 7 тащит core resilience в ядро: RetryTemplate , @Retryable и @ConcurrencyLimit доступны без отдельной зависимости. @Retryable работает и с реактивными типами (через Retry из Project Reactor); для обычных вызовов используется RetryTemplate с политикой retry/backoff. @ConcurrencyLimit помогает ограничивать доступ к ресурсу, что особенно полезно с Virtual Threads.
https://habr.com/ru/companies/spring_aio/articles/1034282/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data #ai #agents
-
Оптимизация запросов в Spring Data JDBC
Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, Spring Data JDBC реализует принцип "what you see is what you get" — каждое обращение к репозиторию означает конкретный SQL-запрос в БД, который просто достаёт дерево Aggregate. Это и преимущество, и, тем не менее, иногда это источник потенциальных проблем с производительностью. В этой статье я разберу ключевые подходы к оптимизации запросов в Spring Data JDBC: от дизайна агрегатов и Single Query Loading, до Stream в качестве возвращаемого значения и @Modifying запросов. Разберём всё с кодом и на примерах. Только один момент - в этой статье я не затрагиваю Spring Data открытые/закрытые Projection-ы и т.п, так как я предполагаю, что пользователи Spring Data знают, что это и в каких ситуациях их стоит использовать. Эти вещи не специфичны для Spring Data JDBC, я же буду говорить про вещи более специфичные для Spring Data JDBC .
https://habr.com/ru/companies/spring_aio/articles/1010558/
#java #spring #spring_data #spring_data_jdbc #orm #sql #performance
-
[Перевод] Spring Data. На пути к более строгой типизации
В новом переводе от команды Spring АйО разберем, почему stringly-typed API со временем становятся хрупкими, чем помогают метамодели вроде Querydsl и JPA Criteria, и как новый механизм в Spring Data даёт более лёгкую и естественную альтернативу без лишней инфраструктуры сборки.
https://habr.com/ru/companies/spring_aio/articles/1014920/
#spring #spring_data #spring_boot #spring_framework #java #kotlin #jooq
-
[Перевод] Паттерны проектирования в Data Engineering, которые необходимо освоить в 2026 году
Настоящая устойчивость систем — в архитектуре. В новом переводе от команды Spring АйО — 8 фундаментальных паттернов проектирования, на которых держатся все современные data engineering-стеки. Освоив их, вы перестанете тушить пожары и начнёте проектировать платформы, которые выдерживают продакшен.
https://habr.com/ru/companies/spring_aio/articles/990336/
#java #kotlin #system_design #patterns #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] Hidden классы в Java. Что скрывают Lambda выражения
С переходом Java на более безопасные и стандартизированные подходы к динамической генерации классов, скрытые (hidden) классы стали ключевым механизмом замены устаревшего Unsafe::defineAnonymousClass . Они решают проблемы доступности, управления жизненным циклом и контроля доступа, особенно актуальные для разработчиков фреймворков и языков на JVM. Хотя скрытые классы пока не полностью заменяют функциональность Unsafe , они лежат в основе ряда важных механизмов, такие как, например, реализация лямбд в JDK. Подробнее - в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/980928/
#java #kotlin #jvm #java_core #spring #spring_boot #spring_framework #springboot #spring_data
-
Новый open source Java коннектор для Tarantool: практика с примерами кода
VK Tech открывает исходный код коннектора Tarantool Java EE и переименовывает его в Tarantool Java SDK. Дистрибутив станет доступен в Maven Central, что упростит интеграцию с Java-приложениями в корпоративных средах. Меня зовут Артём Дубинин, я старший программист в VK Tech. Я разрабатываю коннекторы к Tarantool, а также участвую в разработке различных продуктов в VK Tech. Однажды я понял, что материала про совместную работу Java и Tarantool очень мало и из-за этого может казаться, что совмещать их сложно. Но на самом деле это не так — и иногда альтернативы Tarantool могут быть даже сложнее во взаимодействии. Поэтому я и решил написать эту статью. Цель статьи — показать через код, что Tarantool реально совместить с Java без больших полотен кода, а итеративно с небольшими сниппетами (не считая java импортов и xml 😄). Мы будем использовать такие, чтобы каждый мог попробовать провести у себя на компьютере эти эксперименты и понять, что Tarantool легок в использовании.
https://habr.com/ru/companies/vktech/articles/980380/
#Tarantool #архитектура #Java #коннекторы #Redis #nosql #spring #spring_data #open_source #vk_tech
-
[Перевод] Тред-дампы и Project Loom (виртуальные потоки)
С появлением виртуальных потоков в Java благодаря Project Loom, параллельное программирование стало проще, а производительность — выше. Однако за этой простотой кроются новые вызовы для инструментов отладки и анализа. Как читать тред-дампы, если их теперь тысячи — или миллионы? Какие средства реально помогают найти взаимные блокировки и аномалии в асинхронном коде? Рассмотрим в новом переводе от команды Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/980566/
#java #kotlin #ide #spring #spring_boot #spring_framework #springboot #spring_security #spring_data
-
Путевые заметки о знакомстве со Spring Data R2DBC
Привет, Хабр! Меня зовут Каненков Александр, я backend-разработчик в Домклик. Не так давно я резко и с головой погрузился в мир реактивного программирования и очень заинтересовался этой темой. Хочу поделиться кратким введением в Spring Data R2DBC, зачем это нужно, как начать использовать и какие преимущества даёт. Мы разработаем небольшое приложение, добавим flyway и напишем пару тестов.
-
[Перевод] Spring Boot наконец получил нативную поддержку gRPC
Забудьте о сторонних стартерах и костылях — Spring gRPC 1.0 GA уже здесь. Теперь можно строить высокопроизводительные RPC-сервисы с Protocol Buffers прямо из коробки, без плясок с бубном. В новом переводе от команды Spring АйО рассмотрим пошаговую миграцию со старых решений, генерацию кода из .proto, и сравнение с тем, как это работает в Quarkus.
https://habr.com/ru/companies/spring_aio/articles/978418/
#grpc #java #kotlin #spring #spring_boot #springboot #spring_framework #spring_data
-
[Перевод] Обнаружение взаимоблокировок на JVM с помощью Fray
Команда Spring АйО подготовила перевод про Fray — инструмент для обнаружения и воспроизведения ошибок многопоточности в Java-программах. Основанный на научных исследованиях и написанный на Kotlin, Fray использует технику теневой блокировки для выявления взаимоблокировок и других проблем синхронизации. Он уже доказал свою эффективность на таких проектах, как Kafka, Flink и Lucene.
https://habr.com/ru/companies/spring_aio/articles/976924/
#jvm #java #blocking #kotlin #jvm_hacks #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] Как сократить расходы на токены и повысить точность LLM
Когда количество доступных LLM инструментов (tool-ов) разрастается, традиционные подходы к tool calling становятся непрактичными — утилизация токенов улетает ещё до начала общения. К тому же, модели становится сложнее выбрать нужный набор tool-ов для решения проблемы. В новом переводе от команды Spring АйО читаем о паттерне Tool Search Tool, предложенном Anthropic и реализованном в Spring AI с помощью ToolSearchToolCallAdvisor. Он позволяет LLM динамически находить нужные инструменты по мере необходимости, экономя до 64% токенов и повышая точность.
https://habr.com/ru/companies/spring_aio/articles/976178/
#llm #tool #java #kotlin #spring #spring_boot #spring_framework #springboot #spring_security #spring_data
-
[Перевод] AOT в Spring Data: минус магия, плюс скорость
Команда Spring АйО подготовила перевод статьи о том, как Spring Data тихо, но уверенно избавляется от «магии рантайма» и учит репозитории работать через AOT. Меньше скрытых прокси, больше прозрачного кода, быстрее старт сервисов. Кажется, это одно из самых крутых обновлений Spring за последние годы.
https://habr.com/ru/companies/spring_aio/articles/971364/
#spring #spring_aot #spring_data #spring_7 #spring_boot #spring_framework
-
KRepo: Spring Data для Ktor — без Spring и без боли
KRepo: Никаких имплементаций или инъекций. Под капотом — динамический прокси, кэширование метаданных и независимость от фреймворков: плагины под Exposed, JDBC или MongoDB реализуются отдельно.
-
Как дефолтная пагинация в Spring сломала проект и как это починить
Всем привет, сегодня я хотел бы поделиться с вами историей про Spring пагинацию, почему она ужасна, как она вызвала кучу проблем и как ее починить.
https://habr.com/ru/articles/965794/
#java #kotlin #spring #springboot #spring_data_jpa #spring_data #pagination #keyset #optimization #db
-
[Перевод] Встречаем Spring AI Agents и Spring AI Bench
Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench. В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.
https://habr.com/ru/companies/spring_aio/articles/965294/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data
-
Проекции в Spring Data: производительность vs ограничения
Всем привет! Я работаю разработчиком Java в компании bpm (ранее “ЛАНИТ - Би Пи Эм”). Приглашаю вас погрузиться в увлекательную тему оптимизации запросов в Spring Data — использование проекций. Если вы часто сталкиваетесь с необходимостью выборки лишь нескольких конкретных полей из большой сущности, понимая, насколько ресурсозатратно извлечение всей структуры целиком, этот материал специально для вас.
-
[Перевод] Jackson 3 ворвался в Spring
Команда Spring официально представила поддержку Jackson 3 — одного из крупнейших обновлений в экосистеме JSON для JVM. Уже начиная с Spring Boot 4 и Spring Framework 7, Jackson 3 становится версией по умолчанию, а Jackson 2 помечается как deprecated. В новом переводе от команды Spring АйО поговорим про нововведения — улучшенную безопасность, переход к JsonMapper , отказ от MappingJacksonValue , поддержку новых API и настройку через builder-интерфейсы.
https://habr.com/ru/companies/spring_aio/articles/956366/
#java #kotlin #jackson #jackson_3 #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] LSP API теперь доступен всем пользователям IntelliJ IDEA и разработчикам плагинов
Команда Spring АйО перевела статью от JetBrains, в которой рассказано про избавление одного из главных барьеров на пути к массовому внедрению Language Server Protocol (LSP) в своей экосистеме. С версии IntelliJ IDEA Ultimate 2025.2 пользователи смогут использовать LSP даже после окончания подписки, а с 2025.3 — LSP станет доступным во всех редакциях IDE благодаря переходу на единый дистрибутив.
https://habr.com/ru/companies/spring_aio/articles/943896/
#java #kotlin #ide #idea #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] Spring Boot 4 и Spring Framework 7: Ключевые фичи и изменения
Уже в ноябре 2025 выходит Spring Boot 4 — масштабный релиз, построенный на фундаменте Spring Framework 7.0.0 и Jakarta EE 11. Это не просто очередное обновление, а важный этап в развитии всей Java-платформы: новые возможности для REST и безопасности, улучшенная работа с Kotlin и GraalVM, мощная поддержка облаков и нативных образов, а также инструменты для создания отказоустойчивых приложений. 🧠 Эта статья — больше, чем просто перевод: в ней собрано большое кол-во комментариев от экспертов Spring АйО .
https://habr.com/ru/companies/spring_aio/articles/941310/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data #spring_data_jpa #spring_rest #spring_security
-
Почти ультимативный гайд по Criteria API с продвинутыми возможностями Hibernate
Вам нужно создать сложный запрос к реляционной БД с изменяющимися параметрами? В этой статье рассмотрим основные возможности Criteria API. Также рассмотрим более продвинутые вещи, например создание CTE и оконных функций, которые есть у Hibernate Criteria API. В статье много примеров, которые смогут помочь при написании запросов Criteria API на практике.
https://habr.com/ru/articles/941130/
#java #criteria #spring #hibernate #jpa #spring_data #postgres #sql #db #orm
-
[Перевод] Конфигурация Spring Security на пальцах
В новом переводе от команды Spring АйО мы рассмотрим решение для регистрации и аутентификации пользователя через клиентское JavaScript-приложение с использованием инфраструктуры Spring Security , а также access и refresh токенов. Существует множество базовых примеров работы со Spring Security, поэтому цель данной статьи — более подробно описать возможный процесс с помощью блок-схем.
https://habr.com/ru/companies/spring_aio/articles/935470/
#java #kotlin #spring #spring_security #security #springboot #spring_framework #spring_boot #spring_data
-
[Перевод] Kafka умеет синхронно. В Spring Boot
Apache Kafka — король асинхронного взаимодействия в микросервисных архитектурах. Но что если нужно получить ответ сразу? Перевод от команды Spring АйО шаг за шагом покажет, как превратить Kafka в инструмент синхронной коммуникации — с настройкой ReplyingKafkaTemplate , топиками для ответа и тайм-аутами.
https://habr.com/ru/companies/spring_aio/articles/934936/
#java #kotlin #kafka #kafka_consumer #spring #spring_boot #spring_framework #springboot #spring_data #spring_data_jpa
-
JEP 511: Импорт модулей в Java 25 — как упростить работу с библиотеками
Команда Spring АйО проанализировала JEP 511: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
https://habr.com/ru/companies/spring_aio/articles/933476/
#java #kotlin #spring #spring_boot #spring_framework #spring_data
-
Аннотация Lazy как спасение от циклических зависимостей
В прошлом посте команда Spring АйО подробно разобрала, как @Lazy помогает экономить ресурсы и ускорять старт приложения. Но забыли упомянуть ещё один крайне полезный кейс применения этой аннотации — борьбу с циклическими зависимостями.
https://habr.com/ru/companies/spring_aio/articles/931170/
#spring #spring_boot #spring_framework #springboot #spring_security #spring_data #spring_data_jpa #java #kotlin
-
JEP 520: Метод-трейсинг и тайминг в JFR — замер времени конкретных методов без кода и агентов
Команда Spring АйО провела небольшое исследование JEP 520. В Java 25 JFR (Java Flight Recorder) позволит точно отслеживать выполнение конкретных методов — без изменения исходников, без логирования и без сторонних Java-агентов.
https://habr.com/ru/companies/spring_aio/articles/933306/
#java #kotlin #java_core #spring #spring_boot #spring_framework #springboot #spring_security #spring_data #spring_data_jpa
-
Уже завтра! OpenIDE — профессиональные инструменты без ограничений
Уже завтра, 31 июля состоится
https://habr.com/ru/companies/spring_aio/articles/932340/
#java #kotlin #ide #spring #spring_boot #spring_framework #springboot #spring_data
-
[Перевод] Введение в Jimmer ORM
Совсем недавно статью про ORM-фреймворк Jimmer Михаила Поливахи , эксперта сообщества Spring АйО , опубликовал Baeldung. Перед вами переработанная и дополненная версия, подготовленная специально для сообщества Spring АйО. В ней Михаил раскрывает ключевые особенности Jimmer: отсутствие JPA-наследия, декларативные DTO и гибкий DSL и потенциальную интеграцию со Spring.
https://habr.com/ru/companies/spring_aio/articles/932096/
#java #kotlin #jimmer #hibernate #spring #spring_boot #spring_framework #springboot #spring_security #spring_data
-
Spring Tips: Аннотация @Lazy
Хотите ускорить запуск приложения и сэкономить память? Аннотация @Lazy в Spring поможет инициализировать бины только тогда, когда они действительно понадобятся. Команда Spring АйО поможет разбобраться, как применять @Lazy точечно и глобально, в чём плюсы и подводные камни ленивой инициализации, и как избежать неожиданных ошибок на проде.
https://habr.com/ru/companies/spring_aio/articles/931162/
#java #kotlin #spring #spring_boot #spring_framework #springboot #spring_data #spring_data_jpa