Creación de Entidades y DAO en Base de Datos con Room en Kotlin
Clase 28 de 32 • Curso de Patrones de Diseño en Android
Resumen
¿Cómo crear la entidad Transfer en un proyecto de Kotlin?
Para comenzar a trabajar con entidades en tu proyecto de Kotlin, primero necesitas crear la estructura adecuada para almacenar y gestionar los datos en tu base de datos. Aquí, detallamos los pasos que debes seguir para establecer estas bases, comenzando con la creación de una entidad Transfer adecuada.
¿Cómo definir la clase de entidad Transfer?
La entidad Transfer es esencialmente un esquema de lo que será una tabla en tu base de datos. Este es el proceso para su creación:
-
Creación del paquete y clase de entidad: En primer lugar, dentro del paquete
transfers
, crea un nuevo paquete denominadoData
. Aquí, introduce la claseTransferEntity
. -
Definición de variables y anotaciones: Utiliza
data class
para definir tu entidad simplificando la creación de clases de datos:@Entity(tableName = "transfer") data class TransferEntity( @PrimaryKey(autoGenerate = true) var transactionId: Int = 0, @ColumnInfo(name = "user_id") var userId: String, @ColumnInfo(name = "recipient_id") var recipientId: String, @ColumnInfo(name = "transaction_date") var transactionDate: String, @ColumnInfo(name = "transaction_amount") var transactionAmount: String )
- Usa
@Entity
para declarar que esta clase es una entidad ligada a la tabla "transfer" en la base de datos. - Define las llaves primarias y haz que las columnas sean auto-generadas con anotaciones como
@PrimaryKey
y@ColumnInfo
.
- Usa
¿Cómo crear el DAO (Data Access Object)?
El DAO asegura que puedas acceder y manipular los datos en la base de datos eficientemente.
-
Definición de la interfaz DAO: Crea una nueva interfaz llamada
TransferDao
. Aquí se definirán varias funciones para interactuar con los datos:@Dao interface TransferDao { @Query("SELECT * FROM transfer") fun getAllTransfers(): List<TransferEntity> @Query("SELECT * FROM transfer WHERE user_id = :userId") fun findTransfersByUserId(userId: String): List<TransferEntity> @Insert suspend fun insertTransfer(transfer: TransferEntity) @Delete suspend fun deleteTransfer(transfer: TransferEntity) }
@Dao
indica que esta interfaz proporciona métodos para acceder a la base de datos.- Usa anotaciones como
@Query
,@Insert
, y@Delete
para realizar operaciones CRUD.
¿Cómo establecer la conexión con la base de datos?
Para que tu aplicación acceda a la base de datos, necesitas configurar la conexión con ella.
-
Configuración de la clase de la base de datos:
Crea una clase llamada
ApplicationDatabase
, que extiendaRoomDatabase
, donde se definirá cómo crear y acceder a la base de datos:@Database(entities = [TransferEntity::class], version = 1) abstract class ApplicationDatabase : RoomDatabase() { abstract fun transferDao(): TransferDao companion object { @Volatile private var instance: ApplicationDatabase? = null fun getInstance(context: Context): ApplicationDatabase { return instance ?: synchronized(this) { instance ?: Room.databaseBuilder( context.applicationContext, ApplicationDatabase::class.java, "transfer_database" ).build().also { instance = it } } } } }
- Usa el diseño Singleton para asegurar que solamente una instancia de la base de datos esté abierta a la vez.
Crear una estructura de base de datos robusta en Kotlin con Room no solo es eficiente, sino también esencial para garantizar el rendimiento y la escalabilidad de tu aplicación. A partir de las secciones anteriores, tienes las bases necesarias para continuar expandiendo y mejorando tu aplicación. ¡Sigue explorando y desarrollando!