0Pricing
Android Academy · Урок

Сущности и DAO

Определяйте таблицы и объекты доступа к данным

«Сущности и DAO» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.

Что такое Room

Room — это библиотека постоянного хранения данных, предоставляющая уровень абстракции над SQLite. Она позволяет работать со строками базы данных как с объектами Kotlin, а запросы проверяются во время компиляции.

Три строительных блока Room

  • Entity — таблица, представленная классом данных.
  • DAO — объект доступа к данным, определяющий запросы.
  • Database — объединяет сущности и DAO (в следующем уроке).

Определение сущности

Пометьте класс данных аннотацией @Entity. Каждое свойство становится столбцом.

import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String,
    val email: String
)

Первичные ключи

Каждой сущности нужен @PrimaryKey. Чтобы Room автоматически создавал идентификаторы, используйте autoGenerate.

@Entity
data class Note(
    @PrimaryKey(autoGenerate = true)
    val id: Int = 0,
    val text: String
)

Настройка столбцов

Используйте @ColumnInfo, чтобы переименовать столбец или задать его тип.

import androidx.room.ColumnInfo

@Entity
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "full_name")
    val name: String
)

Что такое DAO

DAO — это интерфейс, помеченный аннотацией @Dao. Он объявляет методы, которые приложение использует для чтения и записи данных. Room создаёт реализацию автоматически.

Вставка, обновление, удаление

Room предоставляет удобные аннотации для основных операций.

@Dao
interface UserDao {
    @Insert
    suspend fun insert(user: User)

    @Update
    suspend fun update(user: User)

    @Delete
    suspend fun delete(user: User)
}

Стратегии разрешения конфликтов

При вставке уже существующей строки выберите стратегию с помощью onConflict.

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun upsert(user: User)

Пользовательские запросы с @Query

Аннотация @Query позволяет писать SQL-запросы. Room проверяет их во время компиляции в соответствии со схемой.

@Query("SELECT * FROM users WHERE id = :id")
suspend fun getById(id: Int): User?

Зачем нужны suspend-функции

Операции ввода-вывода базы данных не должны выполняться в главном потоке. Пометка методов DAO как suspend позволяет Room выполнять их не в главном потоке при вызове из корутины, предотвращая рывки интерфейса.

Безопасность во время компиляции

Одно из главных преимуществ Room: если Вы неправильно укажете имя столбца в @Query, сборка завершится с ошибкой. Вы обнаружите ошибки заранее, а не во время выполнения.

Быстрая проверка

Проверьте, насколько хорошо Вы поняли сущности и DAO.

Повторение

Вы узнали:

  • @Entity определяет таблицу как класс данных с @PrimaryKey.
  • @Dao объявляет методы запроса, вставки, обновления и удаления.
  • SQL-код в @Query проверяется во время компиляции.
  • Методы DAO должны быть suspend для выполнения операций ввода-вывода не в главном потоке.

Часто задаваемые вопросы

Урок «Сущности и DAO» бесплатный?

Да — полный текст урока «Сущности и DAO» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.

Чему я научусь в уроке «Сущности и DAO»?

Определяйте таблицы и объекты доступа к данным Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Сущности и DAO»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Сущности и DAO
  2. Класс базы данных Room
  3. Запросы и связи
  4. Наблюдение за данными с Flow
← Назад к Android Academy