Ein Leitfaden für Anfänger zur Room Persistence Library

Für einen Android-Entwickler ist es keine schwierige Aufgabe, Rohdaten für den internen Speicher in eine strukturierte Datenbank zu konvertieren. Dies geschieht mit der zuverlässigsten Sprache - SQL. Die integrierte SQLite-Kernbibliothek befindet sich im Android-Betriebssystem. Es verarbeitet CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen), die für eine Datenbank erforderlich sind. Java-Klassen und -Schnittstellen für SQLite werden von der android.database bereitgestellt. SQLite unterhält ein effektives Datenbankverwaltungssystem. Dieses herkömmliche Verfahren hat jedoch seine eigenen Nachteile.

  • Sie müssen langen, sich wiederholenden Code schreiben, der zeitaufwändig und fehleranfällig ist.
  • Es ist sehr schwierig, SQL-Abfragen für eine komplexe relationale Datenbank zu verwalten.

Um dies zu überwinden, hat Google die Room Persistence Library eingeführt. Dies fungiert als Abstraktionsschicht für die vorhandenen SQLite-APIs. Alle erforderlichen Pakete, Parameter, Methoden und Variablen werden mithilfe einfacher Anmerkungen in ein Android-Projekt importiert.

Schauen wir uns anhand eines Beispiels an, wie dies implementiert werden kann.

1. Fügen Sie die Gradle-Abhängigkeiten in die Datei build.gradle ein.

implementation “android.arch.persistence.room:runtime:1.0.0”annotationProcessor “android.arch.persistence.room:compiler:1.0.0”

2. Erstellen Sie eine Datenmodellklasse für die Datenbanktabelle und kommentieren Sie deren Tabellennamen und Primärschlüssel.

@Entity public class Movies { @NonNull @PrimaryKey private String movieId; private String movieName; public Movies() { } public String getMovieId() { return movieId; } public void setMovieId(String movieId) { this.movieId = movieId; } public String getMovieName() { return movieName; } public void setMovieName (String movieName) { this.movieName = movieName; } }

3. Erstellen Sie eine Schnittstellenklasse für den Datenbankzugriff. Erstellen Sie abstrakte Methoden für CRUD-Operationen. Fügen Sie eine benutzerdefinierte SQL-Abfrage als Methode hinzu.

@Dao public interface DaoAccess { @Insert void insertOnlySingleMovie (Movies movies); @Insert void insertMultipleMovies (List moviesList); @Query (“SELECT * FROM Movies WHERE movieId = :movieId“) Movies fetchOneMoviesbyMovieId (int movieId); @Update void updateMovie (Movies movies); @Delete void deleteMovie (Movies movies); }

4. Erstellen Sie eine Datenbankklasse für die Datenbankimplementierung.

@Database (entities = {Movies.class}, version = 1, exportSchema = false) public abstract class MovieDatabase extends RoomDatabase { public abstract DaoAccess daoAccess() ; }

5.Deklarieren und initialisieren Sie ein Objekt für die Datenbankklasse in Ihrer Aktivitäts- oder Fragmentklasse.

private static final String DATABASE_NAME = “movies_db”; private MovieDatabase movieDatabase; movieDatabase = Room.databaseBuilder(getApplicationContext(), MovieDatabase.class, DATABASE_NAME) .fallbackToDesctructiveMigration() .build();

Die ersten Schritte sind erledigt. Mit dem Datenbankobjekt können Sie alle Funktionen für die Datenbankverwaltung ausführen.

Beispiel Code einfügen:

new Thread(new Runnable() { @Override public void run() { Movies movie =new Movies(); movie.setMovieId( “2”); movie.setMovieName(“The Prestige”); movieDatabase.daoAccess () . insertOnlySingleMovie (movie); } }) .start();

Verwenden Sie immer einen Thread, AsyncTask oder einen beliebigen Arbeitsthread, um Datenbankoperationen auszuführen.

Weitere Informationen finden Sie unter:

//developer.android.com/training/data-storage/room/index.html

Erleben Sie nahtloses Codieren jetzt, da es Raum für Verbesserungen gibt!

Ursprünglich auf thinkpalm.com veröffentlicht.