En nybörjarguide till Room Persistence Library

Det är inte en svår uppgift för en Android-utvecklare att konvertera rådata till en strukturerad databas för intern lagring. Detta görs med det mest pålitliga språket - SQL. Det inbyggda SQLite-kärnbiblioteket finns i Android OS. Den hanterar CRUD (Skapa, läs, uppdatera och ta bort) operationer som krävs för en databas. Java-klasser och gränssnitt för SQLite tillhandahålls av android.database. SQLite har ett effektivt databashanteringssystem. Men denna konventionella metod har sina egna nackdelar.

  • Du måste skriva lång repetitiv kod, vilket är både tidskrävande och utsatt för misstag.
  • Det är mycket svårt att hantera SQL-frågor för en komplex relationsdatabas.

För att övervinna detta har Google introducerat Room Persistence Library. Detta fungerar som ett abstraktionsskikt för befintliga SQLite-API: er. Alla nödvändiga paket, parametrar, metoder och variabler importeras till ett Android-projekt med enkla kommentarer.

Låt oss ta en titt på hur man implementerar detta med ett exempel.

1. Lägg till gradberoende i filen build.gradle.

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

2. Skapa en datamodellklass för databastabellen och anteckna dess tabellnamn och primära nyckel.

@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. Skapa en gränssnittsklass för databasåtkomst. Skapa abstrakta metoder för CRUD-operationer. Lägg till anpassad SQL-fråga som en metod.

@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. Skapa en databasklass för databasimplementering.

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

5.Deklarera och initialisera ett objekt för klassen Databas i klassen Aktivitet eller Fragment.

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

De första stegen är klara. Genom att använda databasobjektet kan du göra alla funktioner för databashantering.

Provkod:

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

Använd alltid en tråd, AsyncTask eller någon arbetstagare för att utföra databasåtgärder.

För mer information, se:

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

Upplev sömlös kodning nu när det finns RUM för förbättringar!

Ursprungligen publicerad på thinkpalm.com.