🚀 Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 3
Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка “Performance oriented Spring Data JPA & Hibernate”, в котором на наглядных примерах рассказывается, как существенно нарастить производительность приложения, оптимизировав его взаимодействие с БД.
Доклад опубликован тремя частями. В первой части было рассказано об оптимизации управления соединениями с базой данных.
Во второй части мы посмотрели на то, как оптимизировать код и настройки Spring Data и Hibernate, чтобы минимизировать количество отправляемых в базу данных SQL запросов.
Третья часть посвящена обзору инструментов, которые могут помочь разработчику правильно организовать работу по регулярной оптимизации производительности приложений, в том числе при работе командой.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/923872/
Подписывайтесь:
😌 @spring_aio
Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка “Performance oriented Spring Data JPA & Hibernate”, в котором на наглядных примерах рассказывается, как существенно нарастить производительность приложения, оптимизировав его взаимодействие с БД.
Доклад опубликован тремя частями. В первой части было рассказано об оптимизации управления соединениями с базой данных.
Во второй части мы посмотрели на то, как оптимизировать код и настройки Spring Data и Hibernate, чтобы минимизировать количество отправляемых в базу данных SQL запросов.
Третья часть посвящена обзору инструментов, которые могут помочь разработчику правильно организовать работу по регулярной оптимизации производительности приложений, в том числе при работе командой.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/923872/
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍11❤6⚡1
Forwarded from Amplicode
Media is too big
VIEW IN TELEGRAM
🤩 Свежие возможности Amplicode
В недавних обновлениях Amplicode появились два КРУПНЫХ блока нововведений — HTTP Client и Database Client.
Чтобы упростить изучение этих фич, мы создали два новых лендинга на сайте, где вы найдете короткие "How-to" видео с демонстрацией возможностей:
– ConneKt — HTTP-клиент в вашей IDE
– Database Client от Amplicode — управляйте БД прямо из IDE
P.S. К посту прикреплено одно из таких видео: "Просмотр структуры базы данных".
В недавних обновлениях Amplicode появились два КРУПНЫХ блока нововведений — HTTP Client и Database Client.
Чтобы упростить изучение этих фич, мы создали два новых лендинга на сайте, где вы найдете короткие "How-to" видео с демонстрацией возможностей:
– ConneKt — HTTP-клиент в вашей IDE
– Database Client от Amplicode — управляйте БД прямо из IDE
P.S. К посту прикреплено одно из таких видео: "Просмотр структуры базы данных".
1👍28❤12🔥11👎3
❄️ Павел Кислов: Spring Security OAuth2 & Co Explained
Совсем недавно эксперт Spring АйО Павел Кислов выступил с докладом на SnowOne 2025.
🤩 СМОТРЕТЬ НА YOUTUBE
Совсем недавно эксперт Spring АйО Павел Кислов выступил с докладом на SnowOne 2025.
Когда речь заходит о Spring Security и его работе с OAuth2, OIDC, SAML, SSO и Spring Authorization Server, то перед нами больше вопросов, чем ответов. Документация есть, гайды есть, а ответов на возникающие по ходу вопросы нет. Это повод их найти.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍13❤7👎1
Команда Spring АйО перевела статью о работе со Spring Debugger и о том, как его применение существенно облегчает отладку приложений, написанных с использованием Spring Boot. На момент написания статьи фича доступна только в Ultimate версии IntelliJ IDEA.
📚 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/924550/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍8❤6
Наши партнеры из Axiom JDK проведут вебинар, посвящённый техническим аспектам работы сервера приложений Libercat в условиях режима замкнутой программной среды (ЗПС).
В программе:
– Что такое ЗПС и как он влияет на запуск Java-приложений;
– Особенности работы Libercat в защищённом режиме (JRE, modules, запускаемые архивы jar, class файлы);
– Ключевые проблемы реализации и пути их преодоления (решения для борьбы с распаковкой);
– Издержки новых решений: влияние на производительность и потребление ресурсов;
– Возможные пути оптимизации без нарушения требований ЗПС.
Вебинар будет полезен:
– Разработчикам серверных Java-приложений;
– Специалистам по информационной безопасности;
– Администраторам защищённых ИТ-сред;
– Архитекторам программных решений под Astra Linux и аналогичные ОС;
– Экспертам сертификационных лабораторий.
Ведущие
🔹Денис Анисимов, старший инженер-разработчик Axiom JDK
🔹Роман Карпов, директор по стратегии и развитию технологий Axiom JDK
📌 Участие бесплатное – достаточно зарегистрироваться.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤8🔥7
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
😁26🔥6👍3❤2👎1🤔1
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