¿Cómo prepoblar la base de datos de habitaciones en Android?

Room es uno de los componentes de la arquitectura Jetpack en Android. Esto proporciona una capa abstracta sobre la base de datos SQLite para guardar y realizar operaciones en datos persistentes localmente. Google recomienda esto sobre la base de datos SQLite, aunque las API de SQLite son más poderosas, tienen un nivel bastante bajo, lo que requiere mucho tiempo y esfuerzo para usar. Pero Room hace que todo sea fácil y claro para crear una base de datos y realizar operaciones en ella. Pero, ¿qué significa prepoblar la base de datos? Rellenar previamente la base de datos significa tener algunos datos precargados en la base de datos en la primera ejecución. Entonces, veremos la implementación para prepoblar la base de datos Room. Rellenaremos previamente la base de datos a partir de los activos de la aplicación .

Implementación

Necesitamos una base de datos preempaquetada, que almacenaremos en la carpeta de activos en Android Studio.

Paso 1:

Para rellenar previamente una base de datos de habitaciones a partir de una base de datos preempaquetada que se almacena en activos, debemos llamar al método createFromAsset( ) desde el objeto Room.databaseBuilder . Ahora crearemos la entidad de datos . Será una clase de datos, vamos a darle el nombre «Quote.kt». Consulte el siguiente código como referencia.

Kotlin

import androidx.room.Entity
import androidx.room.PrimaryKey
  
@Entity(tableName = "quote")
data class Quote(
    @PrimaryKey(autoGenerate = true)
    val id: Int,
    val text: String,
    val author: String
)

(autoGenerate = true) se usa para incrementar automáticamente a id cada vez que se agregan nuevos datos.

Paso 2:

Entonces necesitamos crear Dao. Dao es una interfaz, por lo que no es necesario definir métodos dentro de ella. El espacio se ocupa de la implementación de estos métodos. Dao está acostumbrado a acceder al objeto de datos en la base de datos. Consulte el siguiente código como referencia.

Kotlin

import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
  
@Dao
interface QuoteDao {
    @Insert
    suspend fun insert(quote: Quote)
  
    @Query("Select * From quote")
    fun getQuote(): LiveData<List<Quote>>
}

Paso 3:

Ahora crearemos la clase de la base de datos , es el principal punto de acceso a los datos persistentes de la aplicación. Es una clase abstracta, se extiende a RoomDatabase. Aquí llamamos al método createFromAsset(“path”) desde nuestro objeto Room.databaseBuilder antes de llamar a build(). Consulte el siguiente código como referencia.

Kotlin

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
  
@Database(entities = [Quote::class], version = 1)
abstract class QuoteDatabase : RoomDatabase() {
    abstract fun quoteDao(): QuoteDao
  
    companion object {
        private var INSTANCE: QuoteDatabase? = null
        fun getDatabase(context: Context): QuoteDatabase {
            if (INSTANCE == null) {
                synchronized(this) {
                    INSTANCE =
                        Room.databaseBuilder(context, QuoteDatabase::class.java, "quote_database")
                            .createFromAsset("quote.db")
                            .build()
                }
            }
            return INSTANCE!!
        }
    }
}

Entonces, así es como implementamos la base de datos de persistencia de habitaciones prepobladas.

Publicación traducida automáticamente

Artículo escrito por ayushpandey3july y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *