Course Content
-
Сохраняем данные в Room + ViewModel
- Коротко об Android Architecture Components и Room
- Создание проекта и добавление необходимых зависимостей
- Создание Entity
- Создание DAO
- Знакомство с LiveData
- Создание базы данных Room
- Знакомство с патерном Repository (Репозиторий) и создание слоя для доступа к данным
- Создание ViewModel
- Создание ячейки списка для отображения UI
- Создание адаптера и добавление RecyclerView
- Добавление записи в БД используя Room
- Создание Activity
- Подключение к базе данных Room
- Итоги
Создание Entity
Для хранения заметок нам понадобится простая таблица, выглядящая следующим образом:
Room позволяет создавать таблицы, используя Entity. Давайте рассмотрим как.
Создание сущности
Создайте новый Kotlin класс и создадите data класс Word
Этот класс описывает сущность – Entity, которая представляет собой таблицу SQLite в которой будут хранится данные, в нашем случае заметки. Каждое публичное поле представляет собой столбец в таблице. Room создаст из такого data класса таблицу и значения полей класса будут соответствовать значениям из таблицы.
Создание data класса
data class Word(val word: String)
Добавление аннотаций
Чтобы Room мог создать из data класса таблицу необходимо добавить аннотации. С помощью аннотаций Room сможет сгенерировать код для построения таблицы. Для генерации таблицы из data класса обновите класс Word следующим образом:
@Entity(tableName = "word_table") class Word(@PrimaryKey @ColumnInfo(name = "word") val word: String)
Давайте разберём каждую аннотацию:
@Entity(tableName =
"word_table"
)
Каждый@Entity
класс представляет собой таблицу SQLite. Вам нужно аннотировать data класс аннотацией@Entity
чтобы Room мог создать таблицу этого data класса. Если необходимо, чтобы имя таблицы отличалось от имени data класса, вы можете использовать параметрtableName
для указания имени. В данном случае имя таблицы будет “word_table”.@PrimaryKey
Каждая сущность должна иметь primary key. В данном конкретном примере, для упрощения, каждая заметка будет одновременно являться и первичным ключом.@ColumnInfo(name =
"word"
)
Данная аннотация позволяет задать имя столбцу. Название столбца “word”.- Каждое свойство, хранимое в БД должно быть публично, что в Kotlin по умолчанию.
@PrimaryKey(autoGenerate=true)
Если вам необходимо, чтобы первичный ключ генерировался автоматически, то вы можете добавить параметр(autoGenerate=true)
в аннотацию@PrimaryKey
В следующем уроке мы создадим DAO – data access object для выполнения SQL – запросов (чтения, обновления записей)