0Pricing
Android Academy · Lektion

Die Room-Datenbankklasse

Erstellen Sie Ihre Datenbank und greifen Sie darauf zu.

Die Room-Datenbankklasse ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Alles zusammenführen

Die Database-Klasse ist der zentrale Zugriffspunkt. Sie führt Ihre Entities auf, deklariert die Version und stellt Ihre DAOs bereit.

Die @Database-Annotation

Erstellen Sie eine abstrakte Klasse, die RoomDatabase erweitert, und annotieren Sie sie mit @Database.

import androidx.room.Database
import androidx.room.RoomDatabase

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

Entities und Version aufführen

Das Array entities teilt Room mit, welche Tabellen erstellt werden sollen. Die Versionsnummer version verfolgt Schemaänderungen für Migrationen.

DAOs bereitstellen

Deklarieren Sie für jedes DAO eine abstrakte Funktion, die den jeweiligen DAO-Typ zurückgibt. Room implementiert sie.

abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDao

Die Datenbank erstellen

Verwenden Sie Room.databaseBuilder, um eine Instanz zu erstellen. Dafür benötigen Sie den Application Context, die Klasse und einen Datenbanknamen.

val db = Room.databaseBuilder(
    context.applicationContext,
    AppDatabase::class.java,
    "app.db"
).build()

Als Singleton verwenden

Das Erstellen einer Datenbank ist aufwendig. Erstellen Sie daher eine Instanz für die gesamte App. Ein übliches Muster verwendet ein Companion Object mit einem synchronisierten Getter.

companion object {
    @Volatile private var INSTANCE: AppDatabase? = null
    fun get(context: Context): AppDatabase =
        INSTANCE ?: synchronized(this) {
            INSTANCE ?: build(context).also { INSTANCE = it }
        }
}

Warum ein Singleton wichtig ist

Mehrere Datenbankinstanzen würden mehrere Verbindungen zu derselben Datei öffnen, was zu Inkonsistenzen und unnötigem Speicherverbrauch führen würde. Eine gemeinsame Instanz sorgt für eine einzige Quelle der Wahrheit.

Mit Hilt bereitstellen

In echten Apps stellen Sie die Datenbank normalerweise über Dependency Injection bereit (behandelt im Hilt-Kurs), statt ein manuelles Singleton zu verwenden.

@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
    Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
        .build()

Schemaänderungen und Migrationen

Wenn Sie eine Entity ändern, erhöhen Sie version und stellen Sie eine Migration bereit, die das SQL zur Umwandlung der alten Daten beschreibt.

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(db: SupportSQLiteDatabase) {
        db.execSQL("ALTER TABLE users ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
    }
}

Destruktive Migration

Während der frühen Entwicklung können Sie fallbackToDestructiveMigration() verwenden. Dabei werden Tabellen gelöscht und neu erstellt, anstatt sie zu migrieren. Veröffentlichen Sie dies niemals mit echten Benutzerdaten in einer Produktionsversion.

Auf DAOs zugreifen

Sobald Sie eine Datenbankinstanz haben, rufen Sie ein DAO ab und verwenden Sie seine Methoden innerhalb einer Coroutine.

val dao = db.userDao()
viewModelScope.launch {
    dao.insert(User(1, "Ada", "ada@x.com"))
}

Kurzer Test

Testen Sie Ihr Verständnis der Database-Klasse.

Zusammenfassung

Sie haben gelernt:

  • @Database führt Entities auf, legt eine Version fest und stellt DAOs bereit.
  • Erstellen Sie die Datenbank mit Room.databaseBuilder als Singleton.
  • Schemaänderungen benötigen eine erhöhte Version und eine Migration.

Häufig gestellte Fragen

Ist die Lektion „Die Room-Datenbankklasse“ kostenlos?

Ja — der vollständige Text von „Die Room-Datenbankklasse“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die Room-Datenbankklasse“?

Erstellen Sie Ihre Datenbank und greifen Sie darauf zu. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Die Room-Datenbankklasse“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Entitäten und DAOs
  2. Die Room-Datenbankklasse
  3. Abfragen und Beziehungen
  4. Daten mit Flow beobachten
← Zurück zu Android Academy