0Pricing
Android Academy · Lección

La clase de base de datos Room

Cree y acceda a su base de datos

La clase de base de datos Room es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.

Conectar todos los conceptos

La clase de base de datos es el principal punto de acceso. Enumera las entidades, declara la versión y expone los DAO.

La anotación @Database

Cree una clase abstracta que extienda RoomDatabase y anótela con @Database.

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

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

Enumerar las entidades y la versión

La matriz entities indica a Room qué tablas debe crear. El número de version realiza el seguimiento de los cambios del esquema para las migraciones.

Exponer los DAO

Para cada DAO, declare una función abstracta que devuelva ese tipo de DAO. Room la implementará.

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

Crear la base de datos

Use Room.databaseBuilder para crear una instancia. Necesita el contexto de la aplicación, la clase y un nombre de base de datos.

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

Convertirla en un singleton

Crear una base de datos es costoso, por lo que debe crear una sola instancia para toda la aplicación. Un patrón habitual utiliza un objeto companion con un getter sincronizado.

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

Por qué es importante un singleton

Varias instancias de la base de datos abrirían varias conexiones al mismo archivo, lo que provocaría incoherencias y desperdiciaría memoria. Una instancia compartida mantiene una única fuente de verdad.

Proporcionarla con Hilt

En aplicaciones reales, normalmente se proporciona la base de datos mediante inyección de dependencias (que se trata en el curso de Hilt), en lugar de usar un singleton manual.

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

Cambios de esquema y migraciones

Al cambiar una entidad, incremente version y proporcione una Migration que describa el SQL para transformar los datos antiguos.

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")
    }
}

Migración destructiva

Durante las primeras fases de desarrollo puede usar fallbackToDestructiveMigration(), que elimina y vuelve a crear las tablas en lugar de migrarlas. Nunca lo incluya en producción con datos reales de usuarios.

Acceder a los DAO

Una vez que tenga la instancia de la base de datos, obtenga un DAO y llame a sus métodos dentro de una coroutine.

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

Comprobación rápida

Compruebe su comprensión de la clase de base de datos.

Resumen

Ha aprendido lo siguiente:

  • @Database enumera las entidades, establece una versión y expone los DAO.
  • Créela con Room.databaseBuilder como un singleton.
  • Los cambios del esquema necesitan una versión incrementada y una Migration.

Preguntas frecuentes

¿La lección «La clase de base de datos Room» es gratis?

Sí — el texto completo de «La clase de base de datos Room» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.

¿Qué aprenderé en «La clase de base de datos Room»?

Cree y acceda a su base de datos Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Android Academy?

No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «La clase de base de datos Room»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Android Academy?

Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Entidades y DAOs
  2. La clase de base de datos Room
  3. Consultas y relaciones
  4. Observar datos con Flow
← Volver a Android Academy