No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creación de componentes de Room

28/32
Recursos

Aportes 5

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

En el mundo real no se recomienda PARA NADA usar el método “allowMainThreadQueries()” al crear la instancia de la base de datos. Ya que las operaciones que realiza el DAO pueden ser muy pesadas para el Main Thread, y esto se ve reflejado en una experiencia de usuario muy mala. Lo recomendable es usar el DAO fuera del Main Thread, haciendo uso de un AsyncTask o mejor aún de una coroutine.

Recordatorio: Singleton es la única instancia para toda la aplicación, se lo puede usar cuando necesitemos una sola instancia, y este podrá ser para múltiples flujos.

Entidad

package com.cristianvillamil.platziwallet.ui.transfer.data

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey

//definir el esuqema de nuestra tabla

@Entity(tableName = "transfers")
data class TransferEntity (
    @ColumnInfo(name = "transaction_id")
    @PrimaryKey(autoGenerate = true)
    val transactionID : Int = 0,
    @ColumnInfo(name = "user_id")
    val userID : String,
    @ColumnInfo(name = "user_name")
    val userName : String,
    @ColumnInfo(name = "transaction_date")
    val transactionDate : String,
    @ColumnInfo(name = "transaction_amount")
    val transactionAmount : String,
    @ColumnInfo(name = "receiver_user_id")
    val receiverUserId: String
)

DAO

package com.cristianvillamil.platziwallet.ui.transfer.data

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query

//DAO Data Access Object
//acceder el objeto
//desde aui podemos definir operaciones CRUD(Create Read Update Delete)
//Rom auto genera clases y va a ejecutar estos metodos
@Dao
interface TransfersDAO {
    @Query("SELECT * FROM transfers")
    fun getAll() : List<TransferEntity>
    @Query("SELECT * FROM transfers WHERE user_name LIKE :userName")
    fun findTransferByUserName(userName: String) : List<TransferEntity>
    @Insert
    fun saveTransfer(transfer: TransferEntity)
    @Delete
    fun deleteTransfer(transfer : TransferEntity)
}

Mas información sobre entity aqui
Mas informacion sobre primary key aqui

He tenido la oportunidad de usar Room en diferentes proyectos, hacerlo con coroutinas es muy genial.