Room pour Kotlin : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Room et pourquoi en a-t-on besoin ?

\n\n

Room est une bibliothèque pour travailler avec des bases de données dans les applications Android écrites en Kotlin ou Java. Elle fournit une couche d'abstraction au-dessus de SQLite, permettant de travailler avec la base de données via une approche orientée objet, plutôt qu'avec des requêtes SQL brutes.

\n\n

Les principaux avantages de Room :

\n
    \n
  • Minimisation du code passe-partout — Room génère automatiquement le code pour travailler avec SQLite à partir d'annotations.
  • \n
  • Vérification des requêtes SQL à la compilation — les erreurs dans les requêtes sont détectées avant le lancement de l'application.
  • \n
  • Intégration avec Coroutines et Flow — prise en charge de la programmation réactive et des opérations asynchrones.
  • \n
  • Migrations de base de données — mécanismes intégrés pour mettre à jour le schéma sans perte de données.
  • \n
  • TypeConverters — possibilité de stocker des types de données complexes (par exemple, Date, List) dans la base.
  • \n
\n\n

Room est idéal pour les applications nécessitant un stockage local de données structurées : notes, cache, paramètres utilisateur, mode hors ligne, etc.

\n\n

Installation de Room

\n\n

Room ne s'installe pas via pip ou npm, car c'est une bibliothèque pour Android. L'ajout au projet se fait via le fichier build.gradle (au niveau du module).

\n\n

Étape 1 : Ajoutez le plugin KSP (Kotlin Symbol Processing)

\n

Dans le build.gradle racine, ajoutez le plugin KSP :

\n
plugins {\n    id 'com.google.devtools.ksp' version '1.9.0-1.0.13' apply false\n}
\n\n

Étape 2 : Connectez Room dans le module de l'application

\n

Dans le build.gradle du module app, ajoutez :

\n
plugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n    id 'com.google.devtools.ksp'\n}\n\nandroid {\n    // ... votre configuration\n}\n\ndependencies {\n    def room_version = "2.6.1"\n\n    implementation "androidx.room:room-runtime:$room_version"\n    ksp "androidx.room:room-compiler:$room_version"\n    implementation "androidx.room:room-ktx:$room_version" // Pour Coroutines\n}
\n\n

Après la synchronisation de Gradle, la bibliothèque est prête à être utilisée.

\n\n

Démarrage rapide avec un exemple de code

\n\n

Créons une application simple pour stocker une liste de tâches (Todo).

\n\n

Étape 1 : Définissez l'entité (Entity)

\n
import androidx.room.Entity\nimport androidx.room.PrimaryKey\n\n@Entity(tableName = "tasks")\ndata class Task(\n    @PrimaryKey(autoGenerate = true)\n    val id: Int = 0,\n    val title: String,\n    val description: String,\n    val isCompleted: Boolean = false\n)
\n\n

Étape 2 : Créez le DAO (Data Access Object)

\n
import androidx.room.*\nimport kotlinx.coroutines.flow.Flow\n\n@Dao\ninterface TaskDao {\n    @Query("SELECT * FROM tasks ORDER BY id DESC")\n    fun getAllTasks(): Flow<List<Task>>\n\n    @Insert\n    suspend fun insertTask(task: Task)\n\n    @Update\n    suspend fun updateTask(task: Task)\n\n    @Delete\n    suspend fun deleteTask(task: Task)\n}
\n\n

Étape 3 : Créez la base de données

\n
import android.content.Context\nimport androidx.room.Database\nimport androidx.room.Room\nimport androidx.room.RoomDatabase\n\n@Database(entities = [Task::class], version = 1)\nabstract class AppDatabase : RoomDatabase() {\n    abstract fun taskDao(): TaskDao\n\n    companion object {\n        @Volatile\n        private var INSTANCE: AppDatabase? = null\n\n        fun getDatabase(context: Context): AppDatabase {\n            return INSTANCE ?: synchronized(this) {\n                val instance = Room.databaseBuilder(\n                    context.applicationContext,\n                    AppDatabase::class.java,\n                    "app_database"\n                ).build()\n                INSTANCE = instance\n                instance\n            }\n        }\n    }\n}
\n\n

Étape 4 : Utilisez

Recommendations