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 鈥渁llowMainThreadQueries()鈥 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.