Room is an SQLite object mapping library providing an abstraction layer over SQLite. Main components:
Entity: Represents a table (@Entity)
DAO: Contains database access methods (@Dao)
Database: Main access point (@Database)
@Entity
data class User(
@PrimaryKey val id: Int,
val name: String
)
@Dao
interface UserDao {
@Query("SELECT * FROM user")
suspend fun getAllUsers(): List<User>
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.