fbpx

Создание 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 – запросов (чтения, обновления записей)