MongoDD - еще одна известная база данных NoSQL. В отличие от колоночной базы данных Cassandra, MongoDB считается документной базой данных. В частности, MongoDB хранит документы в формате BSON (Binary JSON), которые можно запрашивать и извлекать подобно обычным данным в любой другой базе данных.
- Spring Boot
- Java
- Spring MVC
- Thymeleaf
- Validation
- Spring Data MongoDB
- Lombok
По умолчанию Spring Data MongoDB предполагает, что уже есть сервер
MongoDB, работающий локально и прослушивающий порт 27017.
Если на вашем компьютере установлен Docker, то запустить сервер MongoDB
можно простой командой:
docker run -p 27017:27017 -d mongo:latestНо на этапе тестирования и разработки проще и удобнее использовать
встраиваемую базу данных MongoDB. Для этого необходимо подключить
Flapdoodle - встраиваемую версию MongoDB, - добавив следующую зависимость
в спецификацию сборки:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo.spring4x</artifactId>
<version>4.24.0</version>
</dependency>При запуске приложения Spring Boot нужно будет подождать, пока загрузится Embedded MongoDB. Процесс загрузки составлял более 5 минут.
Spring Data MongoDB представляет свой набор аннотаций для отображения типов данных предметной области в документы MongoDB. Наиболее часто используются только четыре:
@Id- объявляет свойство уникальным идентификатором документа;@Document- объявляет тип данных документом, который может храниться в MongoDB;@Field- определяет имя поля (и дополнительно порядок сортировки) для сохранения свойства в хранимом документе;@Transient- определяет свойство, которое не будет сохраняться в базе данных.
По умолчанию коллекции (аналог таблицы в реляционных базах данных) присваивается имя, соответствующее имени класса с первой буквы в нижнем регистре.
Аннотацию @Id можно применить к любому свойству с типом Serializable.
Подход к хранимым документам в MongoDB хорошо укладывается в идею предметно-ориентированного проектирования с сохранением корневых агрегатов. Документы в MongoDB, как правило, определяются как корни агрегатов, а составляющие агрегата - как вложенные документы.
Результат работы приложения:
INFO 17840 --- [mongo-db] [io-8080-exec-10] com.taco.mongo_db.web.OrderController : Order saved with id: 6a3e5f9d6ca69f56a287efa2