Оптимизация запросов в Spring Data JDBC
Я думаю многие согласятся, что Spring Data JDBC — это ORM, который занимает конкретную нишу: он предоставляет более легковесный репозиторный слой доступа к данным поверх реляционной БД без persistence context, без lazy loading, без dirty checking и т.д. Иными словами, 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.
Связанные теги
Компании и люди
Линия сюжета
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
Практический расчет и изготовление преобразователя типа Joule Thief
Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейкиВ данной статье показано, как самостоятельно рассчитать...
Антиспам на нейронках: Gemini Flash в 1000 раз дешевле чем GigaChat
Сравниваю бесплатные лимиты GigaChat, YandexGPT и Gemini Flash для реальной задачи: антиспам-бот в Telegram, 5000 сообщений в сутки. Считаю токены, потоки и рублики. Разница в л...
Конец удобства? Почему MTProxy начал ломаться
1 апреля начали массово наблюдаться проблемы с MTProto-прокси - как публичными, так и приватными. Причём вне зависимости от конфигурации, хостинга или используемого решения (вкл...
Authorization без middleware: как я завернул Casbin в декораторы для FastAPI
Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(...
[Перевод] Ослабевает ли тёмная энергия? Новые данные подтверждают эту гипотезу
Прошлой весной группа из почти 1000 космологов объявила, что тёмная энергия — загадочный фактор, заставляющий Вселенную расширяться с постоянно растущей скоростью — возможно, ос...
Список литературы тоже умеет галлюцинировать: как я делаю систему проверки научных источников
Список литературы долго казался мне самой скучной частью научной работы. Пока не выяснилось, что именно там может прятаться очень неприятная штука: ссылка, которая выглядит убед...
Рекламный слот
Встроенный блок в статье
Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Практический расчет и изготовление преобразователя типа Joule Thief
Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейкиВ данной статье показано, как самостоятельно рассчитать...
Антиспам на нейронках: Gemini Flash в 1000 раз дешевле чем GigaChat
Сравниваю бесплатные лимиты GigaChat, YandexGPT и Gemini Flash для реальной задачи: антиспам-бот в Telegram, 5000 сообщений в сутки. Считаю токены, потоки и рублики. Разница в л...
Конец удобства? Почему MTProxy начал ломаться
1 апреля начали массово наблюдаться проблемы с MTProto-прокси - как публичными, так и приватными. Причём вне зависимости от конфигурации, хостинга или используемого решения (вкл...
Authorization без middleware: как я завернул Casbin в декораторы для FastAPI
Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)
В этом тексте я написал про то как наладить Shell по интерфейсу SWD . Посылать в прошивку команды и получать ответ. Чтобы можно было работать примерно как с UART только по SWD. ...
Практический расчет и изготовление преобразователя типа Joule Thief
Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейкиВ данной статье показано, как самостоятельно рассчитать...
Антиспам на нейронках: Gemini Flash в 1000 раз дешевле чем GigaChat
Сравниваю бесплатные лимиты GigaChat, YandexGPT и Gemini Flash для реальной задачи: антиспам-бот в Telegram, 5000 сообщений в сутки. Считаю токены, потоки и рублики. Разница в л...
Конец удобства? Почему MTProxy начал ломаться
1 апреля начали массово наблюдаться проблемы с MTProto-прокси - как публичными, так и приватными. Причём вне зависимости от конфигурации, хостинга или используемого решения (вкл...