Android Room is a persistence library that provides an abstraction layer over SQLite, simplifying database management in Android apps. It offers three main components: Database, Entity, and DAO.
Database represents the app’s database, defined as an abstract class extending RoomDatabase. Entities are data classes representing tables within the database, annotated with @Entity. Data Access Objects (DAOs) define methods for interacting with the database, using annotations like @Insert, @Update, @Delete, and @Query.
Room streamlines SQLite operations by automatically generating necessary code based on annotations, reducing boilerplate and potential errors. Additionally, it enforces compile-time checks for SQL queries, ensuring correctness before runtime. Room also supports LiveData and RxJava integration, enabling easy observation of database changes and asynchronous execution.
Example:
@Entity
data class User(val id: Int, val name: String)
@Dao
interface UserDao {
@Insert
fun insert(user: User)
@Query(“SELECT * FROM user”)
fun getAllUsers(): LiveData>
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}