Основные компоненты библиотеки Room:
@Entity: Определяет класс как таблицу в базе данных. Аннотируется над классом данных (POJO) и указывается имя таблицы, если оно отличается от имени класса. Можно определить первичный ключ и индексы.
@Dao: Определяет интерфейс или абстрактный класс для доступа к данным (Data Access Object). Содержит методы для выполнения операций с базой данных (вставка, обновление, удаление, запросы).
@Database: Определяет абстрактный класс, который расширяет RoomDatabase. В этой аннотации указываются сущности (таблицы), DAO и версия базы данных. Предоставляет синглтон экземпляр базы данных.
Data Access Objects (DAO): Интерфейсы или абстрактные классы, помеченные аннотацией @Dao. Содержат методы с аннотациями @Insert, @Delete, @Update, @Query для взаимодействия с данными.
RoomDatabase: Абстрактный класс, который генерируется Room на основе класса с аннотацией @Database. Предоставляет точку входа для получения экземпляров DAO.
SQL Queries: Room использует SQL для запросов к базе данных, которые определяются в @Query аннотациях методов DAO.
Пример структуры:
kotlin
Взаимодействие между компонентами: AppDatabase (реализация RoomDatabase) предоставляет доступ к экземпляру UserDao. Методы UserDao выполняют SQL-запросы к таблице users (представленной классом User).