Сущности и 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 — локальная установка не требуется.