Room für Kotlin: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Room und warum wird es benötigt?

\n\n

Room ist eine Bibliothek für die Arbeit mit Datenbanken in Android-Apps, die in Kotlin oder Java geschrieben sind. Sie bietet eine Abstraktionsebene über SQLite und ermöglicht die Arbeit mit der Datenbank über einen objektorientierten Ansatz anstelle von rohen SQL-Abfragen.

\n\n

Die wichtigsten Vorteile von Room:

\n
    \n
  • Minimierung von Boilerplate-Code — Room generiert automatisch Code für die Arbeit mit SQLite basierend auf Annotationen.
  • \n
  • Überprüfung von SQL-Abfragen zur Kompilierzeit — Fehler in Abfragen werden vor dem Start der App erkannt.
  • \n
  • Integration mit Coroutines und Flow — Unterstützung für reaktive Programmierung und asynchrone Operationen.
  • \n
  • Datenbankmigrationen — integrierte Mechanismen zum Aktualisieren des Schemas ohne Datenverlust.
  • \n
  • TypeConverters — Möglichkeit, komplexe Datentypen (z. B. Date, List) in der Datenbank zu speichern.
  • \n
\n\n

Room ist ideal für Apps, die eine lokale Speicherung strukturierter Daten benötigen: Notizen, Cache, Benutzereinstellungen, Offline-Modus usw.

\n\n

Installation von Room

\n\n

Room wird nicht über pip oder npm installiert, da es eine Bibliothek für Android ist. Das Hinzufügen zum Projekt erfolgt über die Datei build.gradle (auf Modulebene).

\n\n

Schritt 1: Fügen Sie das KSP-Plugin (Kotlin Symbol Processing) hinzu

\n

Fügen Sie im root-build.gradle das KSP-Plugin hinzu:

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

Schritt 2: Binden Sie Room im App-Modul ein

\n

Fügen Sie in der build.gradle des app-Moduls Folgendes hinzu:

\n
plugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n    id 'com.google.devtools.ksp'\n}\n\nandroid {\n    // ... Ihre Konfiguration\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" // Für Coroutines\n}
\n\n

Nach der Gradle-Synchronisation ist die Bibliothek einsatzbereit.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Wir erstellen eine einfache App zum Speichern einer Aufgabenliste (Todo).

\n\n

Schritt 1: Definieren Sie die Entität (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

Schritt 2: Erstellen Sie das 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

Schritt 3: Erstellen Sie die Datenbank

\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

Schritt 4: Verwenden Sie

Empfehlungen