MongoDB to nierelacyjna baza danych, która cechuje się wydajnością i skalowalnością. Baza ta oparta jest na modelu dokumentu i składowane w niej dane są we formacie JSON.
Implementacja
Elementy jakie będą niezbędne do stworzenia aplikacji to:
- Zależności (pobranie);
- Model danych;
- Repozytorium.
Pobranie zależności
Zależność jaką należy umieścić w projekcie to biblioteka integrująca Mongo ze Spring Boot:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
Model danych
Model danych opisuje obiekt jaki zostanie umieszczony w bazie danych. W tym przypadku będzie to struktura w formacie JSON. Dla przykładu modelem jest klasa Animal. Ma ona trzy pola id, name, age. Klasa modelu musi mieć:
- adnotacje @Document;
- bezparametrowy konstruktor;
- pole z adnotacją @Id (W przypadku MongoDB kluczem jest ciąg tekstowy);
- właściwości do wszystkich pól (getery i setery).
@Document
public class Animal {
@Id
private String id;
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public Animal() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Repozytorium
Ostaniem elementem jest stworzenie Repozytorium, które będzie pozwalało na zarządzanie obiektami w bazie. Należy utworzyć interfejs, który będzie posiadał adnotację @Repository i rozszerzał MongoRepository. MongoRepository przyjmuje w swoich parametrach typ modelu i typ id modelu.
@Repository
public interface AnimalRepo extends MongoRepository<Animal, String> {}
Konfiguracja
Podanie konfiguracji jest opcjonalne. Jeśli mamy standardowy port i użytkownika to Spring Boot utworzy wszystkie niezbędne instancje automatycznie z domyślą bazą danych o nazwie test. Można nadpisać konfiguracje podając odpowiednie wartości w pliku application.properties.
Wykorzystanie
Przykład demonstrujący zapisywanie i odczytywanie danych w bazie danych. Metoda save() służy do zapisywania obiektu w bazie danych. Natomiast findAll() pobierze wszystkie elementy znajdujące się w bazie. Anagogicznie istnieją metody:
- findOne() – pobiera element według wskazanego id;
- delete() – usuwa element według wskazanego obiektu lub id;
- exists() – sprawdza czy dany element istnieje w bazie;
- count() – sprawdza ilość elementów w bazie;
@RestController
public class AnimalApi {
private AnimalRepo animalRepo;
@Autowired
public AnimalApi(AnimalRepo animalRepo) {
this.animalRepo = animalRepo;
}
@EventListener(ApplicationReadyEvent.class)
public void init() {
animalRepo.deleteAll();
Animal animal1 = new Animal("Dog", 3);
Animal animal2 = new Animal("Cat", 23);
Animal animal3 = new Animal("Mouse", 1);
Animal animal4 = new Animal("Bull", 4);
animalRepo.save(animal1);
animalRepo.save(animal2);
animalRepo.save(animal3);
animalRepo.save(animal4);
}
@GetMapping("/getAll")
public List<Animal> getAll(@RequestParam int age) {
return animalRepo.findAll();
}
}Kod źródłowy
Kod do przykładowej aplikacji znajdziesz na moim koncie GitHub:
https://github.com/bykowski/springboot-mongodb
Szkolenia live dla developerów • praktyczna wiedza, realne case’y, zero lania wody 
