11 Nov, 2018

In fünf Schritten zur Room Datenbank

Im letzten Jahr, 2017, hat Google eine neue Architektur für Datenbanken in Android vorgestellt: Die Room Persistence Library. Diese neue Architektur schafft eine abstrakte Ebene, die auf der SQLite API aufbaut. Room vereinfacht den Umgang mit SQL und ermöglicht so simpleren und besseren Code. In diesem Blogartikel möchte ich dir in fünf Schritten zeigen, wie du deine eigene Datenbank mit Room erstellen kannst. 

Die fünf Schritte

1. Dependencies hinzufügen

Bevor du die Room Library nutzen kannst, musst du einige Dependencies hinzufügen.

In der „build.gradle“ Datei des Projekts:

In der „build.gradle“ Datei des Moduls:

2. Entity erstellen

Bei der Arbeit mit Room musst du sogenannte Entities erstellen. Für jeden dieser Entities wird eine SQL Tabelle erstellt, in der die verschiedenen Felder des Entities gespeichert werden. Um einen Entity zu erhalten, musst du eine Klasse erstellen, welche du mit „@Entity“ annotierst. Den Namen für die Tabelle gibst du in den Klammern hinter der Annotation an: „tableName = Name der Tabelle“. Einen Primary Key kannst du mit der „@PrimaryKey“ Annotation kennzeichnen.

3. DAO erstellen

Um mit einer Tabelle aus der Datenbank interagieren zu können, benötigst du ein sogenanntes DAO (Data Access Object). In Java nutzt du hierfür ein Interface, welches du mit „@DAO“ annotierst. In dieses Interface schreibst du die Methoden, welche dann mit der Tabelle interagieren. Für diese Methoden stehen dir verschiedene Annotationen zur Verfügung: 

@InsertDaten in die Datenbank schreiben
@UpdateDaten aus der Datenbank updaten
@DeleteDaten aus der Datenbank löschen
@QuerySQL Queries nutzen

4. Datenbank erstellen

Nun brauchst du noch die Datenbank an sich. Erstelle hierfür eine abstrakte Klasse, welche du mit „@Database“ annotierst. In den Klammern hinter der Annotation gibst du alle Entities an, welche in der Datenbank gespeichert werden sollen: „entities = {Book.class, etc.}“. Neben diesen musst du die Datenbank-Version angeben: „version = 1“. Abschließend fügst du der Klasse die verschiedenen DAOs hinzu.

Um eine Instanz deiner Datenbank zu erhalten, musst du den DatabaseBuilder von Room nutzen: 

5. Daten einfügen

Mithilfe der Datenbank Instanz kannst du nun mit deiner Datenbank interagieren. Für alle Datenbank-Interaktionen musst du einen Thread verwenden. Dafür kannst du z. B. einen AsyncTask oder Java Thread nutzen.

Fazit

Die Room Persistence Library ist eine sehr gute Möglichkeit, eine SQLite Datenbank in simpler und übersichtlicher Weise zu erstellen. In Kombination mit andren Komponenten wie LiveData erhält man eine robuste und sichere Möglichkeit, Daten in Android langfristig speichern zu können.

Das könnte dich auch interessieren...