Ответ
Аннотация @Dao (Data Access Object) в Room помечает интерфейс или абстрактный класс, который определяет методы для доступа к базе данных. Она служит прослойкой между бизнес-логикой и SQL-запросами, упрощая работу с БД.
Ключевые моменты:
- Содержит методы с аннотациями
@Insert,@Update,@Delete,@Query - Room автоматически генерирует реализацию
- Позволяет выполнять операции в UI-потоке (но лучше использовать корутины/RxJava)
Пример:
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAll(): List<User>
@Insert
suspend fun insert(user: User)
@Query("DELETE FROM users WHERE id = :userId")
fun deleteById(userId: Int)
}