Media is too big
VIEW IN TELEGRAM
Это тот самый человек, который стоял у истоков российского комьюнити Postgres, создал компанию Postgres Professional и внёс огромный вклад в развитие экосистемы.
Советуем посмотреть полностью: Бартунов много говорит про астрономию (его вторая большая любовь), про баланс прикладного и фундаментального, про open source, про то, как на Postgres строят больше сотни реальных продуктов, и даже про то,
Занятие на вечер воскресенья найдено.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥17❤14
Forwarded from Amplicode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥19👍8❤5👎1
🤖 Встречайте Koog — новый AI-фреймворк от JetBrains
Рустам Курамшин, эксперт сообщества Spring АйО, подготовил пост про новый AI-фреймворк от JetBrains – Koog.
AI-агенты — это не фантастика. Это новый уровень взаимодействия с LLM, где модели не просто болтают в чате, а действуют: они умеют вызывать внешние инструменты, планировать, запоминать контекст, адаптироваться и выполнять сложные задачи почти без участия человека.
Эти агенты становятся ключевым компонентом современных систем: от помощников в IDE и CI/CD пайплайнах до интеллектуальных обработчиков в бизнес-приложениях.
JetBrains представили Koog — open source фреймворк для разработки AI-агентов на Kotlin.
Что такое Koog?
Koog — это Agentic AI фреймворк, написанный полностью на идиоматичном Kotlin. Он позволяет создавать AI-агентов, которые:
- запускаются локально без внешних зависимостей
- умеют вызывать инструменты и API
- обрабатывают сложные пайплайны через графовые сценарии
- поддерживают мультимодели (OpenAI, Anthropic, Google, Ollama и др.)
- работают на JVM и JS (за счет Kotlin Multiplatform)
Koog можно использовать как для простых агентов “вопрос-ответ”, так и для построения сложных, многосоставных систем с устойчивой памятью, сжатой историей, потоковой обработкой ответов и гибкой трассировкой.
До недавнего времени экосистема Java не имела по-настоящему удобных, нативных инструментов для работы с AI-агентами, возможно кроме Spring AI в составе Spring Framework.
Пример использования минимального AI-агента в Koog:
Koog — это, возможно, первый шаг к тому, чтобы писать LLM-based приложения просто на Kotlin без лишних зависимостей.
Как потестить Koog:
Репозиторий: https://github.com/JetBrains/koog
Документация: https://docs.koog.ai
Быстрый старт: https://docs.koog.ai/single-run-agents/
💬 Как вам Koog? Делитесь мнениями в комментариях! 👇
Рустам Курамшин, эксперт сообщества Spring АйО, подготовил пост про новый AI-фреймворк от JetBrains – Koog.
AI-агенты — это не фантастика. Это новый уровень взаимодействия с LLM, где модели не просто болтают в чате, а действуют: они умеют вызывать внешние инструменты, планировать, запоминать контекст, адаптироваться и выполнять сложные задачи почти без участия человека.
Эти агенты становятся ключевым компонентом современных систем: от помощников в IDE и CI/CD пайплайнах до интеллектуальных обработчиков в бизнес-приложениях.
JetBrains представили Koog — open source фреймворк для разработки AI-агентов на Kotlin.
Что такое Koog?
Koog — это Agentic AI фреймворк, написанный полностью на идиоматичном Kotlin. Он позволяет создавать AI-агентов, которые:
- запускаются локально без внешних зависимостей
- умеют вызывать инструменты и API
- обрабатывают сложные пайплайны через графовые сценарии
- поддерживают мультимодели (OpenAI, Anthropic, Google, Ollama и др.)
- работают на JVM и JS (за счет Kotlin Multiplatform)
Koog можно использовать как для простых агентов “вопрос-ответ”, так и для построения сложных, многосоставных систем с устойчивой памятью, сжатой историей, потоковой обработкой ответов и гибкой трассировкой.
До недавнего времени экосистема Java не имела по-настоящему удобных, нативных инструментов для работы с AI-агентами, возможно кроме Spring AI в составе Spring Framework.
Пример использования минимального AI-агента в Koog:
fun main() = runBlocking {
val apiKey = System.getenv("OPENAI_API_KEY")
val agent = AIAgent(
executor = simpleOpenAIExecutor(apiKey),
systemPrompt = "Ты - очень полезный ассистент-помошник",
llmModel = OpenAIModels.Chat.GPT4o
)
val result = agent.run("Привет! Чем можешь помочь?")
println(result)
}
Koog — это, возможно, первый шаг к тому, чтобы писать LLM-based приложения просто на Kotlin без лишних зависимостей.
Как потестить Koog:
Репозиторий: https://github.com/JetBrains/koog
Документация: https://docs.koog.ai
Быстрый старт: https://docs.koog.ai/single-run-agents/
💬 Как вам Koog? Делитесь мнениями в комментариях! 👇
👍30🔥16❤14👎2
🧠 Подключение Spring AI к локальным AI-моделям с помощью Foundry Local
Команда Spring АйО перевела статью, которая покажет, как интегрировать Spring AI с Foundry Local — десктопным приложением от Microsoft, совместимым с OpenAI API.
Вы узнаете, как настроить локальную AI-модель, подключить её к Spring Boot и создать REST-эндпоинты для чат-бота и суммаризации текста. Всё это — с акцентом на производительность, безопасность и автономность.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/925074/
Команда Spring АйО перевела статью, которая покажет, как интегрировать Spring AI с Foundry Local — десктопным приложением от Microsoft, совместимым с OpenAI API.
Вы узнаете, как настроить локальную AI-модель, подключить её к Spring Boot и создать REST-эндпоинты для чат-бота и суммаризации текста. Всё это — с акцентом на производительность, безопасность и автономность.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/925074/
🔥14👍7❤6👎1
⚡️⚡️⚡️ OpenIDE – профессиональные инструменты без ограничений
Мы, Spring АйО, являемся генеральным информационным партнёром первого масштабного события, посвящённого OpenIDE — новой открытой экосистемы для Java, Kotlin, Go, Python, JavaScript и других языков.
В программе — доклады от экспертов сообщества и не только, live-демо и обсуждение концепции OpenIDE.
📅 31 июля в 17:00 МСК
📍 Бесплатно, онлайн, на всех наших платформах. Главное – зарегистрироваться.
🔗 ЗАРЕГИСТРИРОВАТЬСЯ
Мы, Spring АйО, являемся генеральным информационным партнёром первого масштабного события, посвящённого OpenIDE — новой открытой экосистемы для Java, Kotlin, Go, Python, JavaScript и других языков.
В программе — доклады от экспертов сообщества и не только, live-демо и обсуждение концепции OpenIDE.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍14🤩6❤3👎1🤔1🤯1
💡 JEP 507: Примитивы в pattern matching и switch — Java 25 ломает старые ограничения
Java 25 продолжает развивать pattern matching: теперь в
В чем была проблема?
Раньше pattern matching работал только с объектами:
То же самое со
Что добавили?
Теперь можно будет:
Использовать примитивы в
Использовать примитивные паттерны в
Почему это круто?
– упрощаются безопасные преобразования типов без ручных проверок диапазонов.
– убираются лишние
–
– можно будет использовать примитивы в
Пример:
Допустим, есть JSON:
Раньше:
С Java 25:
Зачем это добавили?
Паттерны должны быть едиными как для объектов, так и для примитивов. Это делает язык мощнее, проще, безопаснее
Java 25 умеет проверять и безопасно преобразовывать примитивы прямо в
Как вам новая фича? Предлагаем обсудить комментариях👇
Java 25 продолжает развивать pattern matching: теперь в
instanceof
и switch
можно будет использовать примитивные типы!В чем была проблема?
Раньше pattern matching работал только с объектами:
if (obj instanceof String s) { ... }
А вот так было нельзя:
if (x instanceof int i) { ... } // Ошибка
То же самое со
switch
— примитивы были ограничены: нельзя было использовать switch
на boolean
, float
, double
, long
или с примитивными паттернами.Что добавили?
Теперь можно будет:
Использовать примитивы в
instanceof
:
if (num instanceof byte b) { ... } // Автоматически проверит, влезает ли num в byte
Писать switch по boolean, long, float, double:
switch (flag) {
case true -> System.out.println("Да");
case false -> System.out.println("Нет");
}
Использовать примитивные паттерны в
switch
:
switch (value) {
case 0 -> System.out.println("Ноль");
case int i when i > 0 -> System.out.println("Положительное: " + i);
}
Почему это круто?
– упрощаются безопасные преобразования типов без ручных проверок диапазонов.
– убираются лишние
if
перед кастами.–
switch
будет действительно универсальным: можно будет свитчить по любым типам.– можно будет использовать примитивы в
record
-паттернах и instanceof
так же просто, как объекты.Пример:
Допустим, есть JSON:
sealed interface JsonValue { ... }
record JsonNumber(double d) implements JsonValue { }
Раньше:
if (json instanceof JsonNumber(double d)) {
int age = (int) d; // Ручной каст, возможна потеря данных
}
С Java 25:
if (json instanceof JsonNumber(int age)) {
System.out.println("Возраст: " + age);
}
// Сработает только если double без потери вмещается в int
Зачем это добавили?
Паттерны должны быть едиными как для объектов, так и для примитивов. Это делает язык мощнее, проще, безопаснее
Java 25 умеет проверять и безопасно преобразовывать примитивы прямо в
instanceof
и switch
.Как вам новая фича? Предлагаем обсудить комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥29❤9🤔3👎1
🤩 Ого: Гэвин Кинг добавил интеграцию со Spring в рамках Hibernate Data Repositories
Это значит, что скоро Jakarta Data можно будет использовать в приложениях на Spring с минимальными усилиями. Без лишних приседаний.
Судя по скриншотам, интеграция выглядит привычным образом, а методы
💡 Напомним: Гэвин Кинг — core contributor в Jakarta Data спецификацию, а также автор Hibernate и Ceylon. Поэтому, если кто и может сделать это по-человечески, то он!
Пока это лишь пост Гэвина в социальной сети — официальной поддержки Hibernate Data Repositories для Spring ещё нет. Как только появятся детали от команды Spring, мы обязательно напишем.
Это значит, что скоро Jakarta Data можно будет использовать в приложениях на Spring с минимальными усилиями. Без лишних приседаний.
Судя по скриншотам, интеграция выглядит привычным образом, а методы
@Query
, @Find
и @Update
уже работают как надо!Только что добавил интеграцию Hibernate Data Repositories со Spring, благодаря чему использовать Jakarta Data в Spring стало гораздо проще.
Пока это лишь пост Гэвина в социальной сети — официальной поддержки Hibernate Data Repositories для Spring ещё нет. Как только появятся детали от команды Spring, мы обязательно напишем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29🤩12⚡7👍4🤔3😁2❤1
Anonymous Poll
25%
⛔ Совсем не доверяю — только для генерации идей или черновиков
60%
🟠 Использую для рутины, но всегда перепроверяю
5%
✅ Полностью доверяю — уже деплоил код, написанный AI
2%
🙈 Ранее пробовал, но столкнулся с негативными последствиями — сейчас осторожничаю
4%
🏛 Не использую и не планирую — есть опасения насчёт качества и юридических рисков
4%
🤺 Пока не пробовал, но хочется потестить в бою
❤13🔥10👍8
💡 JEP 511: Импорт модулей в Java 25 — как упростить работу с библиотеками
В Java 25 появится долгожданная фича: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
В чем проблема?
Например, чтобы работать с потоками, коллекциями и функциями, раньше приходилось писать кучу импортов:
Теперь можно будет написать:
И все нужные классы из
Зачем это нужно?
– Быстрее подключать модули целиком без перечисления всех пакетов.
– Удобно для прототипов, скриптов и JShell.
– Упрощает жизнь новичкам — не нужно вспоминать, где в иерархии пакетов живет
Пример:
Благодаря
⚙️ Как это работает?
Также подключаются пакеты из модулей, от которых
⚡ Важно:
Это работает даже в обычных (не модульных) проектах.
Если в разных модулях встречаются классы с одинаковыми именами, компилятор сообщит об ошибке. В этом случае можно уточнить импорт:
Java постоянно расширяется, и стандартные библиотеки становятся все объемнее. import module — это способ сделать работу с ними проще и быстрее, без потери совместимости.
Что думаете о новой фиче? Предлагаем обсудить комментариях👇
В Java 25 появится долгожданная фича: импорт модулей. Теперь можно будет одним импортом подключать все пакеты, которые экспортирует модуль. Это сильно упростит работу с большими библиотеками, особенно в прототипах и обучении.
В чем проблема?
Например, чтобы работать с потоками, коллекциями и функциями, раньше приходилось писать кучу импортов:
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
Теперь можно будет написать:
import module java.base;
И все нужные классы из
java.util
, java.util.stream
и других будут доступны сразу.Зачем это нужно?
– Быстрее подключать модули целиком без перечисления всех пакетов.
– Удобно для прототипов, скриптов и JShell.
– Упрощает жизнь новичкам — не нужно вспоминать, где в иерархии пакетов живет
List
или Stream
.Пример:
import module java.sql;
public class Demo {
public static void main(String[] args) throws Exception {
Connection conn = DriverManager.getConnection("jdbc:h2:mem:");
Statement stmt = conn.createStatement();
stmt.execute("create table test(id int)");
System.out.println("Таблица создана");
}
}
Благодаря
import module java.sql;
доступны все классы из java.sql
и javax.sql
сразу.⚙️ Как это работает?
import module M
; — подключает все публичные классы и интерфейсы из экспортируемых пакетов модуля M
.Также подключаются пакеты из модулей, от которых
M
зависит транзитивно.⚡ Важно:
Это работает даже в обычных (не модульных) проектах.
Если в разных модулях встречаются классы с одинаковыми именами, компилятор сообщит об ошибке. В этом случае можно уточнить импорт:
import java.sql.Date; // Уточнение, какой именно класс Date использовать
Java постоянно расширяется, и стандартные библиотеки становятся все объемнее. import module — это способ сделать работу с ними проще и быстрее, без потери совместимости.
Что думаете о новой фиче? Предлагаем обсудить комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🤔10❤8🔥8👎7
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥9👍7👎4😁1🤯1
В прошлом посте мы подробно разобрали, как
@Lazy
помогает экономить ресурсы и ускорять старт приложения. Но забыли упомянуть ещё один крайне полезный кейс применения этой аннотации — борьбу с циклическими зависимостями.Если в приложении бин A зависит от бина B, а бин B в свою очередь зависит от A — вы получите классическую circular dependency. Spring просто не сможет создать такие бины через конструкторы. Однако, если применить
@Lazy
на одном из аргументов, Spring обернёт зависимость в прокси и разорвёт цикл.
@Service
public class ServiceA {
private final ServiceB serviceB;
public ServiceA(@Lazy ServiceB serviceB) {
this.serviceB = serviceB;
}
}
Важно:
@Lazy
здесь влияет только на точку инжекции, а не на весь бин. Оба бина будут инициализированы жадно, но зависимость будет подгружена позже.Если же вы хотите, чтобы инициализация бина проходила лениво (при первом обращении к бину), то отметьте аннотацией
@Lazy
и сам бин тоже:
@Lazy
@Service
public class ServiceB {
// ...
}
⚠️ Использование свойства:
spring.main.allow-circular-references=true
Это ещё один способ разрешить циклы на уровне конфигурации. Spring сам предложит это в логах, если столкнётся с циклом:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
Но будьте осторожны:
– Это работает только с field-based и setter-based инжекцией
– Если используете constructor-based инжекцию, то приложение по прежнему не запустится, лишь немного изменится сообщение в логах
– До Spring Boot 2.6 это поведение было включено по умолчанию — после обновления многие столкнулись с неожиданными фейлами.
Поэтому такой подход стоит рассматривать как временную меру, а не как архитектурное решение.
#SpringTips #Lazy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤13🔥8⚡4👎4
🧨 Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?
На KotlinConf 2025 анонсировали одну из самых обсуждаемых новинок Kotlin — Rich Errors. Вместо того чтобы выбрасывать исключения, теперь функции могут возвращать возможные ошибки как часть своей сигнатуры:
Такой подход делает потенциальные сбои явными, упрощает тестирование и избавляет от try-catch для предсказуемых ошибок. Новинка уже доступна в Kotlin 2.4 и, по мнению авторов, особенно полезна в бизнес-логике.
Но в сообществе мнения разделились.
✅ Что говорят сторонники Rich Errors?
🛑 Это логичное продолжение идеи безопасности типов, как null safety.
🛑 Ошибки становятся частью API — теперь явно видно, какие именно проблемы могут возникнуть.
🛑 try-catch больше не нужен там, где ошибка — ожидаемый результат.
🛑 Тестировать становится проще: вместо моков и исключений — обычная проверка значения.
🛑 Хорошо сочетается с функциональными паттернами без необходимости подключать сторонние библиотеки.
⚠️ Что вызывает сомнения?
🛑 В контроллерах и сервисах с большим числом потенциальных ошибок сигнатуры методов становятся громоздкими.
🛑 Нет способа элегантно агрегировать ошибки: A | B | C работает, но не имеет общей семантики.
🛑 В рамках Spring-приложений реалистичная польза ограничена — фреймворки останутся на исключениях.
🛑 Добавление такого типа обработки может серьёзно сказаться на времени компиляции.
💭 И что теперь?
Для одних Rich Errors — это долгожданное улучшение и эволюция Kotlin. Для других — спорный эксперимент, который добавляет сложности без ощутимой пользы в реальных проектах.
А вы как думаете? Используете ли Rich Errors в своём коде — или пока просто наблюдаете со стороны?
Ох и жарким же будет обсуждение этой новости в следующем выпуске подкаста Spring АйО 🫣
На KotlinConf 2025 анонсировали одну из самых обсуждаемых новинок Kotlin — Rich Errors. Вместо того чтобы выбрасывать исключения, теперь функции могут возвращать возможные ошибки как часть своей сигнатуры:
fun fetchUser(): User | NetworkError
Такой подход делает потенциальные сбои явными, упрощает тестирование и избавляет от try-catch для предсказуемых ошибок. Новинка уже доступна в Kotlin 2.4 и, по мнению авторов, особенно полезна в бизнес-логике.
Но в сообществе мнения разделились.
✅ Что говорят сторонники Rich Errors?
⚠️ Что вызывает сомнения?
💭 И что теперь?
Для одних Rich Errors — это долгожданное улучшение и эволюция Kotlin. Для других — спорный эксперимент, который добавляет сложности без ощутимой пользы в реальных проектах.
А вы как думаете? Используете ли Rich Errors в своём коде — или пока просто наблюдаете со стороны?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔23👍13❤5👎5🔥3
🚀 IntelliJ IDEA переходит на единый дистрибутив
Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate.
Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/928668/
Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate.
Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/928668/
🔥38🤔14🤯9⚡8❤5👎1😁1
Forwarded from Amplicode
Мы не могли обойти это замечательное событие стороной и решили провести прямую трансляцию, посвященную ему.
В программе мероприятия доклад о ConneKt — новом HTTP-клиенте для IntelliJ IDEA, который теперь становится Open Source!
Спикеры:
🫶 Онлайн. Бесплатно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥10❤7👎1
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– JEP 511: Импорт модулей в Java 25 — как упростить работу с библиотеками
– Spring сдаёт позиции, Hibernate под угрозой, AI-агенты захватывают Россию | Spring АйО Подкаст №26
– Аннотация Lazy как спасение от циклических зависимостей
– Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?
– IntelliJ IDEA переходит на единый дистрибутив
– Amplicode: День рождения Kotlin уже на следующей неделе!
– JPoint: Алексей Рагозин — Data retrieval на пальцах
– Деплоим Spring Boot приложение через Docker Compose в Timeweb Cloud за 10 минут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤4
Media is too big
VIEW IN TELEGRAM
💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10❤5
Поздравляем всех, кто пишет, учит, продвигает и просто любит Kotlin — язык, который сделал разработку на JVM (и не только!) понятнее, приятнее и современнее. Этот язык программирования был впервые представлен компанией JetBrains 22 июля 2011 года.
С момента первой стабильной версии (1.0) в 2016 году Kotlin прошёл впечатляющий путь:
Kotlin давно вышел за пределы JetBrains: его используют в крупных продакшн-проектах по всему миру, о нём говорят на конференциях, а комьюнити — одно из самых тёплых и активных.
С днём рождения, Kotlin! 🎂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61❤17👍16
Forwarded from OpenIDE
This media is not supported in your browser
VIEW IN TELEGRAM
Один инструмент для многих языков
Александр Шустанов, Михаил Поливаха и Павел Кислов продемонстрируют, как OpenIDE поддерживает мультиязычную разработку в рамках одной IDE. В формате демо реализуем бизнес-функцию охватывающую 4 сервиса на разных языках: TypeScript, Go, Python и Java/Kotlin. Расскажем, как единый инструмент упрощает навигацию, отладку и работу в мультикомандных проектах.
📅 31 июля в 17:00 МСК
📍 Бесплатно, онлайн, на всех наших платформах. Главное – зарегистрироваться.
🔗 ЗАРЕГИСТРИРОВАТЬСЯ
Александр Шустанов, Михаил Поливаха и Павел Кислов продемонстрируют, как OpenIDE поддерживает мультиязычную разработку в рамках одной IDE. В формате демо реализуем бизнес-функцию охватывающую 4 сервиса на разных языках: TypeScript, Go, Python и Java/Kotlin. Расскажем, как единый инструмент упрощает навигацию, отладку и работу в мультикомандных проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥13👍8⚡1👎1👌1
🧩 Spring Data JDBC и R2DBC 4.0 получат поддержку составных идентификаторов
Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.
Теперь достаточно просто описать record с нужными полями, пометить его как
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930354/
Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.
Теперь достаточно просто описать record с нужными полями, пометить его как
@Id
, и Spring Data сам корректно построит SQL-сущность.📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/930354/
👍25🔥11❤9🤩1
🔥 Spring АйО — это живое сообщество
Хотите что-то обсудить? Нашли интересную статью? Есть вопрос, на который нужен экспертный взгляд?
Предлагайте темы для постов и переводов — просто напишите нам в личку.
Мы всегда на связи — обсуждаем, спорим, поддерживаем и растём вместе. Нам важно ваше мнение, ваш опыт, ваши вопросы. Также не забывайте про наш чат, эксперты Spring АйО в нем всегда на связи!
Давайте делать контент вместе!
Хотите что-то обсудить? Нашли интересную статью? Есть вопрос, на который нужен экспертный взгляд?
Предлагайте темы для постов и переводов — просто напишите нам в личку.
Мы всегда на связи — обсуждаем, спорим, поддерживаем и растём вместе. Нам важно ваше мнение, ваш опыт, ваши вопросы. Также не забывайте про наш чат, эксперты Spring АйО в нем всегда на связи!
Давайте делать контент вместе!
❤16🔥8👍4