Room — это persistent library, предоставляющая абстрактный слой над SQLite для упрощения доступа к базе данных на Android. Она является частью Architecture Components и обеспечивает более строгую проверку запросов во время компиляции.
Основные компоненты Room:
- Entity: Класс, представляющий таблицу в базе данных. Аннотируется
@Entity. Каждое поле Entity, которое должно быть сохранено, должно быть либо public field, либо иметь public getter.
kotlin
- DAO (Data Access Object): Интерфейс или абстрактный класс, содержащий методы для взаимодействия с базой данных (вставка, обновление, удаление, запросы). Аннотируется
@Dao.
kotlin
- Database: Абстрактный класс, наследующийся от
RoomDatabase. Он связывает Entity и DAO, предоставляя точки доступа к DAO. Аннотируется @Database.
kotlin
Преимущества Room:
- Compile-time verification: Проверка SQL-запросов во время компиляции, что снижает количество ошибок во время выполнения.
- Более простая интеграция с Architecture Components: Легко использовать с LiveData и Paging Library.
- Уменьшение шаблонного кода: Room генерирует большую часть необходимого кода для работы с базой данных.
- Поддержка Coroutines и Flow: Удобная интеграция с современными подходами асинхронного программирования.
Room абстрагирует детали работы с SQLite, предлагая более безопасный и удобный способ взаимодействия с локальной базой данных.