No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
18 Hrs
57 Min
57 Seg

Creación de componentes de Room

28/32
Recursos

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

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

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

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

Importante evitar el doble signo de admiración sin realizar una validación previa para evitar el NullpointerException

context?.let { context -> ApplicationDataBase.getAppDataBase(context) }