En nybegyndervejledning til Room Persistence Library

Det er ikke en vanskelig opgave for en Android-udvikler at konvertere rådata til en struktureret database til intern lagring. Dette gøres ved hjælp af det mest pålidelige sprog - SQL. Det indbyggede SQLite-kernebibliotek er inden for Android OS. Det håndterer CRUD (Opret, læs, opdater og slet) operationer, der kræves til en database. Java-klasser og grænseflader til SQLite leveres af android.database. SQLite opretholder et effektivt databasestyringssystem. Men denne konventionelle metode har sine egne ulemper.

  • Du er nødt til at skrive lang gentagne kode, som vil være tidskrævende såvel som tilbøjelig til fejl.
  • Det er meget vanskeligt at administrere SQL-forespørgsler til en kompleks relationsdatabase.

For at overvinde dette har Google introduceret Room Persistence Library. Dette fungerer som et abstraktionslag for de eksisterende SQLite API'er. Alle de nødvendige pakker, parametre, metoder og variabler importeres til et Android-projekt ved hjælp af enkle kommentarer.

Lad os se på, hvordan du implementerer dette med et eksempel.

1. Tilføj gradleafhængigheder i build.gradle-filen.

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

2. Opret en datamodelklasse til databasetabellen og noter dens tabelnavn og primære nøgle.

@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. Opret en interface-klasse til databaseadgang. Opret abstrakte metoder til CRUD-operationer. Tilføj tilpasset SQL-forespørgsel som en metode.

@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. Opret en databaseklasse til implementering af database.

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

5.Deklarer og initialiser et objekt til databaseklassen i din aktivitet- eller fragmentklasse.

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

De første trin er udført. Ved at bruge databaseobjektet kan du udføre alle funktioner til databasestyring.

Prøve indsæt kode:

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

Brug altid en tråd, AsyncTask eller en hvilken som helst arbejdstråd til at udføre databasehandlinger.

For yderligere information, se venligst:

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

Oplev problemfri kodning nu, hvor der er plads til forbedring!

Oprindeligt offentliggjort på thinkpalm.com.