Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Работа с MongoDB

MongoDD - еще одна известная база данных NoSQL. В отличие от колоночной базы данных Cassandra, MongoDB считается документной базой данных. В частности, MongoDB хранит документы в формате BSON (Binary JSON), которые можно запрашивать и извлекать подобно обычным данным в любой другой базе данных.

🎓 Содержание

  1. Стек технологий
  2. Подключение базы данных MongoDB
  3. Описание аннотаций в MongoDB

💻 Стек технологий

  • Spring Boot
  • Java
  • Spring MVC
  • Thymeleaf
  • Validation
  • Spring Data MongoDB
  • Lombok

📇 Подключение базы данных MongoDB

По умолчанию 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 минут.

📝 Описание аннотаций в MongoDB

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

Packages

Contributors

Languages