Spring Data MongoDB

Тема дорожной карты · Spring Boot

Spring Data MongoDB — это интеграционный уровень Spring Boot для MongoDB, привносящий знакомый доступ к данным в стиле репозитория и абстракции Spring-шаблонов в популярную документоориентированную базу данных. Добавление spring-boot-starter-data-mongodb в проект позволяет Spring Boot авто-настроить MongoClient и MappingMongoConverter на основе spring.data.mongodb.uri в application.properties, не требуя никакого шаблонного кода для подключения. Разработчики определяют доменные классы, аннотированные @Document и @Field, затем объявляют интерфейсы MongoRepository, методы запросов которых — например, findByAuthorAndPublishedTrue() — автоматически реализуются во время выполнения через механизм вывода запросов Spring Data. Для более сложных пайплайнов агрегации MongoTemplate обеспечивает прямой доступ к фреймворку агрегации MongoDB и управлению индексами, тогда как реактивная поддержка через ReactiveMongoRepository позволяет неблокирующий доступ к MongoDB в приложениях Spring WebFlux на базе Project Reactor. Spring Data MongoDB плавно интегрируется с Spring Security, Spring Cache и контейнеризированными экземплярами MongoDB, управляемыми Testcontainers в интеграционных тестах.

Как это работает

Spring Data MongoDB покрывает cache + NoSQL + low-level access. @Cacheable + Spring Cache abstraction (Caffeine, Redis, EhCache) меморизируют результаты методов. Spring Data Redis — кеш, sessions, pub/sub, distributed locks. Spring Data MongoDB для document storage. JdbcTemplate для raw SQL, когда JPA мешает (read-heavy queries, сложные joins). Выбирайте правильный инструмент под паттерн — JPA не молоток.

Когда применять

Кешируйте reads, не writes. Local cache — Caffeine; distributed — Redis. Не кешируйте вечно — TTL + инвалидация на writes. Mongo когда document model подходит (event stores, content) — не уходите от реляционного по дефолту. JdbcTemplate быстрый + battle-tested, когда нужен контроль.

Типичные ошибки

Ловушки Spring Data MongoDB: @Cacheable на методах с mutable state (stale cache); нет eviction (кеш растёт без границ); Mongo "потому что NoSQL" без подходящей document model; raw SQL со string concat (SQL injection — parameter binding).

Связанные понятия

Полезные ресурсы