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<String, Object> docData = new HashMap<>();
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());

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<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot snapshot,
@Nullable FirestoreException e) {
if (e != null) {
System.err.println("Listen failed: " + e);
return;
}
if (snapshot != null && 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 😉
Zobacz listę szkoleń


