Objectif : Comprendre le fonctionnement de Room et réaliser des opérations CRUD de base.
LiveData
ViewModel
@Entity
@Dao
@Database
Architecture typique :
UI -> ViewModel -> Repository -> DAO -> Room -> SQLite
@Entity data class Articles( @PrimaryKey(autoGenerate = true) val id: Int = 0, val titre: String, val fait: Boolean )
@Dao interface ArticlesDao { @Query("SELECT * FROM articles") fun getAll(): List<Article> @Insert suspend fun inserer(article: Article) @Update suspend fun update(article: Article) @Delete suspend fun supprimer(article: Article) }
@Database(entities = [Article::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun articleDao(): ArticleDao }
val db = Room.databaseBuilder( applicationContext, AppDatabase::class.java, "articles-db" ).build()
AppDatabase.getInstance()
Entity
DAO
Database