La classe de base de données Room
Créez votre base de données et accédez-y.
La classe de base de données Room est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Tout relier
La classe de base de données est le principal point d’accès. Elle répertorie vos entités, déclare la version et expose vos DAO.
L’annotation @Database
Créez une classe abstraite qui étend RoomDatabase et annotez-la avec @Database.
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(
entities = [User::class],
version = 1
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}Répertorier les entités et la version
Le tableau entities indique à Room quelles tables créer. Le numéro de version suit les modifications du schéma pour les migrations.
Exposer les DAO
Pour chaque DAO, déclarez une fonction abstraite qui renvoie le type de ce DAO. Room l’implémente.
abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDaoConstruire la base de données
Utilisez Room.databaseBuilder pour créer une instance. Il lui faut un contexte d’application, la classe et un nom de base de données.
val db = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app.db"
).build()En faire un singleton
La création d’une base de données est coûteuse ; créez donc une seule instance pour toute l’application. Un modèle courant utilise un objet compagnon avec un accesseur synchronisé.
companion object {
@Volatile private var INSTANCE: AppDatabase? = null
fun get(context: Context): AppDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: build(context).also { INSTANCE = it }
}
}Pourquoi un singleton est important
Plusieurs instances de base de données ouvriraient plusieurs connexions vers le même fichier, ce qui provoquerait des incohérences et gaspillerait de la mémoire. Une instance partagée conserve une source unique de vérité.
La fournir avec Hilt
Dans les applications réelles, vous fournissez généralement la base de données par injection de dépendances (présentée dans le cours sur Hilt), plutôt qu’au moyen d’un singleton manuel.
@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
.build()Modifications du schéma et migrations
Lorsque vous modifiez une entité, incrémentez la version et fournissez une Migration décrivant le SQL qui transforme les anciennes données.
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")
}
}Migration destructive
Au début du développement, vous pouvez utiliser fallbackToDestructiveMigration(), qui supprime et recrée les tables au lieu d’effectuer une migration. Ne déployez jamais cela en production avec de véritables données utilisateur.
Accéder aux DAO
Une fois l’instance de la base de données obtenue, récupérez un DAO et appelez ses méthodes dans une coroutine.
val dao = db.userDao()
viewModelScope.launch {
dao.insert(User(1, "Ada", "ada@x.com"))
}Vérification rapide
Vérifiez votre compréhension de la classe de base de données.
Récapitulatif
Vous avez appris que :
@Databaserépertorie les entités, définit une version et expose les DAO.- Construisez-la avec
Room.databaseBuildersous forme de singleton. - Les modifications du schéma nécessitent une version augmentée et une Migration.
Questions Fréquemment Posées
La leçon « La classe de base de données Room » est-elle gratuite ?
Oui — le texte complet de « La classe de base de données Room » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « La classe de base de données Room » ?
Créez votre base de données et accédez-y. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « La classe de base de données Room » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Entités et DAO
- La classe de base de données Room
- Requêtes et relations
- Observer les données avec Flow