w , ,

FajneFajne

Firebase + Java – nasłuchiwanie zdarzeń w bazie danych

Czym jest Firebase?

Firebase, to platforma aplikacji mobilnych i webowych, która dostarcza szereg narzędzi i usprawnień, które możesz zaimplementować w swojej aplikacji. W zależności od języka programowania i frameworka Firebase oferuje, róże możliwości które widać na obrazku poniżej.

Zaczynamy

W tym artykule zrobimy dwie aplikacje. Pierwsza, która będzie umieszczała dane w bazie danych, natomiast druga aplikacja będzie nasłuchiwała bazę danych i w momencie, kiedy pojawią się jakieś zmiany, to automatycznie je zaciągnie.

Zaczynamy od utworzenia nowego projektu na stronie:
console.firebase.google.com

Pojawi się kreator, w którym należy podać nazwę aplikacji, region i opcjonalnie wyrażenie zgody na dzielenie danych Google Analytics.

 

Tworzenie projektu

Aby połączyć aplikacje napisaną w Java wraz z Firebase trzeba na portalu wygenerować plik zawierający poświadczenia.

Aby to zrobić należy przejść:
⚙️ -> Project settings -> Service accounts -> Generate new private key

Tak wygenerowany plik możemy dołączyć do naszego projektu.

Również w projekcie w zależnościach należy dodać bibliotekę klienta Firebase:

<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>6.9.0</version>
</dependency>

Następnie z wykorzystaniem API biblioteki wczytujemy z pliku poświadczenia i na ich podstawie konfigurujemy klienta Firebase.

FileInputStream serviceAccount =
        new FileInputStream("byku-app-5238f66662.json"); 
FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .setDatabaseUrl("https://byku-app.firebaseio.com")
        .build();

FirebaseApp.initializeApp(options);

W linii 2 wskazujemy ścieżkę do pliku zawierającego nasze poświadczenia.
Linia 5 zawiera link do aplikacji.

Połaczenie z baza danych

Firebase umożliwia hostowanie nierelacyjnych baz danych. W pierwszej kolejności trzeba ją utworzyć na portalu Firebase:
Develop -> Storage -> Get Started
A następnie w kreatorze dodajemy nowy Storage.

Po tym kroku możemy w kodzie utworzyć klienta bazy danych i zapisać w niej kolekcje:

Firestore db = FirestoreClient.getFirestore();
Map&lt;String, Object&gt; docData = new HashMap&lt;&gt;();
docData.put("name", "Los Angeles");
docData.put("state", "CA");
docData.put("country", "USA");
docData.put("regions", Arrays.asList("west_coast", "socal"));
ApiFuture<WriteResult> future = db.collection("cities").document("LA").set(docData);
System.out.println(future.get().getUpdateTime());
Rezultat zapisu

Odczyt z bazy danych

Żeby nasłuchiwać zmiany w bazie danych należy podpiąć wskazać którą kolekcje i dokument chcemy nasłuchiwać a następnie podpiąć pod niego Listener.

DocumentReference docRef = db.collection("cities").document("SF");
docRef.addSnapshotListener(new EventListener&lt;DocumentSnapshot&gt;() {
  @Override
  public void onEvent(@Nullable DocumentSnapshot snapshot,
                      @Nullable FirestoreException e) {
    if (e != null) {
      System.err.println("Listen failed: " + e);
      return;
    }

    if (snapshot != null &amp;&amp; snapshot.exists()) {
      System.out.println("Current data: " + snapshot.getData());
    } else {
      System.out.print("Current data: null");
    }
  }
});

Należy pamiętać, że jeśli robimy to w nowym projekcie to musimy ponownie skonfigurować klienta podając plik z poświadczeniami.

Podsumowanie

Firebase dostarcza darmowy hosting nierelacyjnej bazy danych. Możliwość nasłuchiwania zmiany rekordów w bazie danych daje nam alternatywę do stosowania kolejek lub socektów. Jeśli chcesz więcej artykułów o możliwościach wykorzystania Firebase, to daj znać w komentarzu 😉

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

hibernate

Hibernate #6 – najprzydatniejsze adnotacje przy modelowaniu klas encji

Kluczowe kompetencje miękkie programisty – #vlog 01