Что такое аннотация Embedded в Room

«Что такое аннотация Embedded в Room» — вопрос из категории Базы данных, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

@Embedded в Room позволяет встраивать один объект в другой как составную часть сущности, избегая создания отдельной таблицы. Это упрощает работу с сложными объектами, сохраняя их структуру в БД.

Пример:

data class Address(
    val street: String,
    val city: String
)

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String,
    @Embedded val address: Address
)

В таблице User будут колонки: id, name, street, city. Можно использовать prefix для избежания конфликтов имен. Подходит для композиции объектов, но не для наследования.