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 }