AppInitDev Academy · Android avanzado · Nivel intermedio

Room: entidades, DAO y migraciones sin perder datos

Construye persistencia local con Room y cambia esquemas conservando registros.

← Ver todos los temas

Guía formativa completa · Actualizada el 9 de noviembre de 2026

Esta unidad comprende cuatro subtemas, un ejemplo, notas de implementación, una práctica y referencias oficiales. Los ejemplos son demostraciones pedagógicas, no implementaciones auditadas de AppInitDev.

Nota editorial. Este material distingue hechos documentados, un ejemplo elaborado para aprender y recomendaciones de implementación. Las referencias numeradas llevan a las fuentes primarias; los escenarios con dominios ficticios y datos simulados no representan una auditoría en producción. Comprueba versiones, políticas, permisos y respuestas reales antes de aplicar cambios.

1. Modelo y responsabilidades

Room organiza tablas con entidades, consultas en DAO y una base de datos que conecta el esquema. Empieza identificando claves primarias estables y restricciones: una nota de usuario necesita un ID que no cambie al sincronizar. Evita guardar todos los atributos dentro de una cadena JSON si después necesitas buscar o ordenar. Define consultas que recuperen solo lo necesario para la pantalla, y deja las reglas de negocio fuera del DAO. [1]

Ejemplo contextualizado: El DAO recupera notas ordenadas por actualización; el repositorio transforma los resultados en un estado listo para la interfaz.

Nota de estudio: antes de pasar al siguiente apartado, formula en una frase cuál es el problema que este mecanismo resuelve y en qué situación no deberías aplicarlo. Si no puedes explicarlo, contrasta el caso con la documentación enlazada.

2. Migración: cambio de estructura, no borrado

Una actualización puede agregar una columna, dividir una tabla o cambiar un índice. Exporta esquemas versionados y crea pruebas que abran una base anterior y validen que los datos siguen allí. No uses recreación destructiva como solución por defecto: perdería trabajo de quienes actualizan. Si hay una migración automática, comprueba que maneje renombrados y modificaciones ambiguas. [1]

Ejemplo contextualizado: Una tabla Notes versión 1 incorpora la columna archived con valor inicial false; las notas anteriores permanecen.

Nota de estudio: antes de pasar al siguiente apartado, formula en una frase cuál es el problema que este mecanismo resuelve y en qué situación no deberías aplicarlo. Si no puedes explicarlo, contrasta el caso con la documentación enlazada.

3. Transacciones y datos consistentes

Las operaciones vinculadas deben completarse juntas o revertirse. Por ejemplo, mover una nota de carpeta implica cambiar la relación y registrar un evento de auditoría local; una falla intermedia no debería dejar referencias huérfanas. Simula interrupciones y duplicaciones. Indexar campos consultados repetidamente puede ayudar, pero añade coste de escritura y almacenamiento: mide antes de optimizar. [2]

Ejemplo contextualizado: Prueba un fallo entre dos escrituras y verifica que la transacción deja la base en el estado anterior.

Nota de estudio: antes de pasar al siguiente apartado, formula en una frase cuál es el problema que este mecanismo resuelve y en qué situación no deberías aplicarlo. Si no puedes explicarlo, contrasta el caso con la documentación enlazada.

4. Prueba de migración reproducible

Crea un conjunto pequeño de registros artificiales con textos acentuados y valores nulos permitidos. Exporta el esquema de la versión antigua, instala la nueva y ejecuta consultas de conteo y contenido. Documenta resultados de integridad y problemas encontrados. Este escenario requiere dependencias Room configuradas para la versión del proyecto; el ejemplo es conceptual, no código de publicación. [2]

Ejemplo contextualizado: Compara el número de registros, IDs y valores relevantes antes y después de actualizar.

Nota de estudio: antes de pasar al siguiente apartado, formula en una frase cuál es el problema que este mecanismo resuelve y en qué situación no deberías aplicarlo. Si no puedes explicarlo, contrasta el caso con la documentación enlazada.

Ejemplo técnico comentado

Este fragmento resume el concepto de la unidad. Utilízalo solo como punto de partida: comprueba dependencias, sintaxis contextual y seguridad antes de incorporarlo a un proyecto real.

CREATE TABLE notes (id TEXT PRIMARY KEY, title TEXT NOT NULL, updated_at INTEGER NOT NULL);

Laboratorio guiado y evidencias

  1. Preparar: elige una pantalla, archivo o proyecto pequeño que no contenga datos reales; anota requisitos y versión del entorno.
  2. Implementar: reproduce el ejemplo central del tema y registra cada decisión que tomaste.
  3. Probar: ejecuta un caso correcto, uno erróneo y otro límite; compara lo esperado con lo observado.
  4. Contrastar: revisa las dos fuentes numeradas y anota al menos una condición que el ejemplo simplificado omite.
  5. Entregar: genera una tabla con las entradas, capturas o logs sin datos personales, hallazgos y siguientes acciones.

Rúbrica: 25 % explicación del concepto, 25 % reproducción del caso, 25 % pruebas y límites, 25 % evidencia y referencias. Es una rúbrica educativa, no una certificación.

Preguntas para comprobar el aprendizaje

¿Por qué no basta con copiar el ejemplo y ver que funciona una vez?

Porque faltan casos de error, verificación de entorno y pruebas de los límites documentados. Una sola ejecución no demuestra compatibilidad general.

¿Cómo decidir entre dos estrategias posibles en este tema?

Explica el objetivo, compara riesgos y recursos, consulta las fuentes primarias y conserva los resultados de una prueba repetible.

Fuentes y citas numeradas

Las citas [1] y [2] apuntan a documentación primaria; los ejemplos y actividades son elaboración educativa original de Academy, no citas textuales. Consultadas el 9 de noviembre de 2026.

  1. Android Developers. Persistencia de datos con Room. Fuente primaria ↗. Consultada: 9 de noviembre de 2026.
  2. Android Developers. Migraciones de bases de datos Room. Fuente primaria ↗. Consultada: 9 de noviembre de 2026.

Tu progreso y notas

El progreso se guarda solo en este navegador. No introduzcas datos sensibles.

Progreso pendiente de guardar.

Continúa aprendiendo

Herramientas locales · Rutas de aprendizaje · Biblioteca de fuentes