Посібник для початківців з бібліотеки стійкості кімнат

Перетворити необроблені дані у структуровану базу даних для внутрішнього зберігання - це не складна задача для розробника Android. Це робиться за допомогою найнадійнішої мови - SQL. Вбудована основна бібліотека SQLite знаходиться в ОС Android. Він буде обробляти операції CRUD (створення, читання, оновлення та видалення), необхідні для бази даних. Класи Java та інтерфейси для SQLite надаються базою даних android.data. SQLite підтримує ефективну систему управління базами даних. Але цей звичайний спосіб має свої недоліки.

  • Вам доведеться писати довгий повторюваний код, який забирає багато часу, а також схильний до помилок.
  • Управляти запитами SQL для складної реляційної бази даних дуже важко.

Щоб подолати це, Google представив бібліотеку стійкості кімнат. Це діє як рівень абстракції для існуючих API SQLite. Усі необхідні пакети, параметри, методи та змінні імпортуються до проекту Android за допомогою простих анотацій.

Давайте подивимося, як це реалізувати на прикладі.

1. Додайте залежності gradle у файл build.gradle.

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

2. Створіть клас моделі даних для таблиці бази даних та анотуйте її назву та первинний ключ.

@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. Створіть клас інтерфейсу для доступу до бази даних. Створіть абстрактні методи для CRUD-операцій. Додайте власний запит SQL як метод.

@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. Створіть клас бази даних для реалізації бази даних.

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

5. Оголосіть та ініціалізуйте об'єкт для класу бази даних у класі Activity або Fragment.

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

Початкові кроки зроблено. Використовуючи об'єкт бази даних, ви можете виконувати всі функції управління базами даних.

Зразок коду вставки:

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

Завжди використовуйте Thread, AsyncTask або будь-які робочі потоки для виконання операцій з базою даних.

Для отримання додаткової інформації, будь ласка, перевірте:

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

Досвід безперебійного кодування тепер, коли є НОМЕР для вдосконалення!

Спочатку опубліковано на thinkpalm.com.