Расскажите про Database View в Room
Начиная с версии 2.1.0 Room поддерживает SQLite database views.
Database Views позволяют инкапсулировать запрос в БД внутри класса. Такие классы представляют из себя простенькие объекты с данными.
Чтобы создать такой класс необходимо добавить аннотацию @DatabaseView к классу, а в качестве аргумента аннотации передать запрос, который данный класс должен представлять. Вот пример:
@DatabaseView("SELECT worker.id, worker.name, worker.departmentId," +
"department.name AS departmentName FROM worker " +
"INNER JOIN department ON worker.departmentId = department.id")
data class WorkerDetail(
val id: Long,
val name: String?,
val departmentId: Long,
val departmentName: String?
)
А чтобы добавить данный класс как часть БД вашего приложения необходимо добавить его в свойство views аннотации @Database, как тут:
@Database(entities = [Worker::class],
views =[WorkerDetail::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun workerDao(): WorkerDao
}
Peer-to-peer собеседования
AI Sprints — обучение профессиям с ИИ
Практика собеседований с менторами и другими студентами. Реальные вопросы по Kotlin, Android и Backend
- Живые собеседования: практикуйте интервью с менторами и коллегами-студентами
- Реальные вопросы: база вопросов по Kotlin, Android, Backend и QA
- Фидбек: обратная связь после каждого собеседования — знаете, что улучшить
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе