Blog para desarrollo de aplicaciones en Android, aprende paso a paso como crear aplicaciones.

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más

CRUD con Room Database en Android

CRUD con Room Database en Android

Introducción

En el desarrollo de aplicaciones Android modernas, el manejo de datos locales es una necesidad fundamental. Ya sea para guardar usuarios, tareas, configuraciones o información temporal, contar con una base de datos eficiente y segura es clave.
Aquí es donde entra Room Database, la librería oficial de Google que actúa como una capa de abstracción sobre SQLite.

En este artículo aprenderás cómo implementar un CRUD completo (Create, Read, Update, Delete) con Room Database usando Java en Android Studio, siguiendo buenas prácticas, estructura limpia y código fácil de mantener.

Este contenido está orientado a desarrolladores Android que desean trabajar con bases de datos locales de forma profesional.


¿Qué es Room Database?

Room es parte de Android Jetpack y facilita el trabajo con SQLite al proporcionar:

  • Verificación de consultas en tiempo de compilación

  • Menos código boilerplate

  • Integración con LiveData y ViewModel

  • Seguridad y mejor rendimiento

Room se compone de tres elementos principales:

  1. Entity → Representa una tabla

  2. DAO (Data Access Object) → Define las consultas

  3. Database → Punto de acceso a la base de datos


¿Qué es CRUD?

CRUD representa las cuatro operaciones básicas sobre datos:

  • Create → Insertar registros

  • Read → Leer registros

  • Update → Actualizar registros

  • Delete → Eliminar registros

Room permite implementar estas operaciones de forma clara y estructurada.


1️⃣ Configuración inicial de Room

Agrega las dependencias en tu archivo build.gradle (Module):

implementation "androidx.room:room-runtime:2.6.1" annotationProcessor "androidx.room:room-compiler:2.6.1"

Sincroniza el proyecto antes de continuar.


2️⃣ Crear la Entity (Tabla)

Ejemplo: una tabla llamada Usuario

import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity(tableName = "usuarios") public class Usuario { @PrimaryKey(autoGenerate = true) public int id; public String nombre; public String email; public Usuario(String nombre, String email) { this.nombre = nombre; this.email = email; } }

✔ Cada Entity representa una tabla
✔ Cada atributo es una columna


3️⃣ Crear el DAO (Data Access Object)

Aquí definimos las operaciones CRUD.

import androidx.room.Dao; import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; import androidx.room.Delete; import java.util.List; @Dao public interface UsuarioDao { @Insert void insertar(Usuario usuario); @Query("SELECT * FROM usuarios") List<Usuario> obtenerTodos(); @Update void actualizar(Usuario usuario); @Delete void eliminar(Usuario usuario); @Query("DELETE FROM usuarios") void eliminarTodo(); }

✔ Room valida estas consultas automáticamente
✔ Reduce errores comunes de SQLite


4️⃣ Crear la clase Database

import android.content.Context; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; @Database(entities = {Usuario.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { private static AppDatabase instancia; public abstract UsuarioDao usuarioDao(); public static synchronized AppDatabase getInstance(Context context) { if (instancia == null) { instancia = Room.databaseBuilder( context.getApplicationContext(), AppDatabase.class, "app_database" ).allowMainThreadQueries().build(); } return instancia; } }

allowMainThreadQueries() solo para pruebas
✔ En producción se recomienda usar AsyncTask, Executors o ViewModel


5️⃣ Implementar CRUD en una Activity

Insertar datos (Create)

AppDatabase db = AppDatabase.getInstance(this); Usuario usuario = new Usuario("Carlos", "carlos@email.com"); db.usuarioDao().insertar(usuario);

Leer datos (Read)

List<Usuario> lista = db.usuarioDao().obtenerTodos(); for (Usuario u : lista) { Log.d("USUARIO", u.nombre + " - " + u.email); }

Actualizar datos (Update)

usuario.nombre = "Carlos Actualizado"; db.usuarioDao().actualizar(usuario);

Eliminar datos (Delete)

db.usuarioDao().eliminar(usuario);

Buenas prácticas con Room

  • No ejecutar consultas en el hilo principal

  • Usar ViewModel + LiveData

  • Manejar versiones con migraciones

  • Separar lógica de UI y datos

  • Usar repositorios


Ventajas de usar Room Database

✅ Menos código
✅ Más seguridad
✅ Escalable
✅ Compatible con arquitectura moderna
✅ Ideal para apps offline


Preguntas frecuentes (FAQ)

❓ ¿Room reemplaza a SQLite?

No, Room es una capa sobre SQLite que facilita su uso.

❓ ¿Room funciona sin internet?

Sí, es una base de datos local.

❓ ¿Puedo usar Room con RecyclerView?

Sí, es una combinación muy común.

❓ ¿Room es recomendado por Google?

Sí, es la solución oficial para bases de datos locales.

❓ ¿Se puede usar Room con Firebase?

Sí, Room puede funcionar como caché local.

No hay comentarios:

Publicar un comentario