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 😉