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