Créer des vues dans une base de données

La bibliothèque de persistance Room est compatible avec les vues de base de données SQLite, ce qui vous permet d'encapsuler une requête dans une classe. Room fait référence à ces classes reposant sur des requêtes en tant que vues. Vous pouvez les utiliser comme objets de données dans un objet d'accès aux données (DAO).

Créer une vue

Pour créer une vue, ajoutez l'@DatabaseView annotation à une classe. Définissez la valeur de l'annotation sur la requête que la classe représente.

L'extrait de code suivant fournit un exemple de vue :

@DatabaseView(
    """
    SELECT User.id, User.name, User.departmentId, Department.name AS departmentName
    FROM User INNER JOIN Department ON User.departmentId = Department.id
    """
)
data class UserDetail(
    val id: Long,
    val name: String?,
    val departmentId: Long,
    val departmentName: String?
)

Associer une vue à votre base de données

Pour inclure cette vue dans votre base de données, ajoutez la views propriété à l' application @Database annotation :

@Database(
    entities = [User::class, Department::class],
    views = [UserDetail::class],
    version = 1
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}