Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les versions 2.1.0 et ultérieures de la bibliothèque de persistance Room fournissent une prise en charge pour les vues de la 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. Elles se comportent comme des objets de données simples lorsqu'elles sont utilisées dans un DAO.
Créer une vue
Pour créer une vue, ajoutez l'annotation @DatabaseView à une classe.
Définissez la valeur de l'annotation sur la requête que la classe doit représenter.
L'extrait de code suivant fournit un exemple de vue :
Kotlin
@DatabaseView("SELECT user.id, user.name, user.departmentId,"+"department.name AS departmentName FROM user "+"INNER JOIN department ON user.departmentId = department.id")dataclassUserDetail(valid:Long,valname:String?,valdepartmentId:Long,valdepartmentName:String?)
Java
@DatabaseView("SELECT user.id, user.name, user.departmentId,"+"department.name AS departmentName FROM user "+"INNER JOIN department ON user.departmentId = department.id")publicclassUserDetail{publiclongid;publicStringname;publiclongdepartmentId;publicStringdepartmentName;}
Associer une vue à votre base de données
Pour inclure cette vue dans la base de données de votre application, ajoutez la propriété views dans l'annotation @Database de votre application :
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[null,null,["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Create views into a database\n\nVersion 2.1.0 and higher of the [Room persistence\nlibrary](/training/data-storage/room) provides support for [SQLite database\nviews](https://www.sqlite.org/lang_createview.html), allowing you\nto encapsulate a query into a class. Room refers to these query-backed classes\nas *views* , and they behave the same as simple data objects when used in a\n[DAO](/training/data-storage/room/accessing-data).\n| **Note:** Like [entities](/training/data-storage/room/defining-data), you can run `SELECT` statements against views. However, you cannot run `INSERT`, `UPDATE`, or `DELETE` statements against views.\n\nCreate a view\n-------------\n\nTo create a view, add the\n[`@DatabaseView`](/reference/androidx/room/DatabaseView) annotation to a class.\nSet the annotation's value to the query that the class should represent.\n\nThe following code snippet provides an example of a view: \n\n### Kotlin\n\n```kotlin\n@DatabaseView(\"SELECT user.id, user.name, user.departmentId,\" +\n \"department.name AS departmentName FROM user \" +\n \"INNER JOIN department ON user.departmentId = department.id\")\ndata class UserDetail(\n val id: Long,\n val name: String?,\n val departmentId: Long,\n val departmentName: String?\n)\n```\n\n### Java\n\n```java\n@DatabaseView(\"SELECT user.id, user.name, user.departmentId,\" +\n \"department.name AS departmentName FROM user \" +\n \"INNER JOIN department ON user.departmentId = department.id\")\npublic class UserDetail {\n public long id;\n public String name;\n public long departmentId;\n public String departmentName;\n}\n```\n\nAssociate a view with your database\n-----------------------------------\n\nTo include this view as part of your app's database, include the\n[`views`](/reference/androidx/room/Database#views) property in your app's\n`@Database` annotation: \n\n### Kotlin\n\n```kotlin\n@Database(entities = [User::class],\n views =[UserDetail::class], version = 1)\nabstract class AppDatabase : RoomDatabase() {\n abstract fun userDao(): UserDao\n}\n```\n\n### Java\n\n```java\n@Database(entities = {User.class}, views = {UserDetail.class},\n version = 1)\npublic abstract class AppDatabase extends RoomDatabase {\n public abstract UserDao userDao();\n}\n```"]]