w , , ,

FajneFajne Dobre!Dobre! ŚwietnieŚwietnie Że co?Że co? WnerwWnerw

Spring Boot #19 – Integracja z MongoDB

Spring Boot
Spring Boot

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:

  1. Zależności (pobranie);
  2. Model danych;
  3. 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

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Spring Boot

Spring Boot #18 – Java Message Service i RabbitMQ

Spring Boot

Spring Boot #20 – konfigurowanie klienta pocztowego