Sobes.tech
Junior

Китобхонаи Room чист?

sobes.tech AI

Ҷавоб аз AI

Room — китоби устуворест, ки қабати абстрактироӣ дар болоии SQLite барои содда кардани дастрасӣ ба пойгоҳи додаҳо дар Android медиҳад. Ин қисм аз компонентҳои меъморӣ аст ва назорати қатъии бештарро дар вақти компиляцияи пурсишҳо таъмин мекунад.

Компонентҳои асосии Room:

  • Entity: Класс, ки ҷадвали пойгоҳи додаҳоро намояндагӣ мекунад. Бо @Entity нишона зада шудааст. Ҳар як майдони Entity, ки бояд нигоҳ дошта шавад, бояд ё майдони умумӣ бошад ё getter-и умумӣ дошта бошад.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Интерфейс ё класс абстрактӣ, ки усулҳои барои ҳамкорӣ бо пойгоҳи додаҳо (вуруди, навсозӣ, тоза кардан, пурсишҳо) дорад. Бо @Dao нишона зада шудааст.
    @Dao
    interface UserDao {
        @Query("SELECT * FROM users WHERE id = :userId")
        fun getUserById(userId: Int): User?
    
        @Insert(onConflict = OnConflictStrategy.IGNORE)
        suspend fun insertUser(user: User)
    }
    
  • Database: Класс абстрактӣ, ки аз RoomDatabase мерос мегирад. Entity ва DAO-ро пайваст мекунад ва нуқтаҳои дастрасӣ ба DAO-ро таъмин мекунад. Бо @Database нишона зада шудааст.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Афзалиятҳои Room:

  • Таҳқиқи дар вақти компиляция: Пурсишҳои SQL-ро дар вақти компиляция санҷида, хатогиҳои дар вақти иҷроро кам мекунад.
  • Интегратсияи осон бо компонентҳои меъморӣ: Бо LiveData ва Paging Library ба осонӣ истифода мешавад.
  • Кодекси boilerplate-ро кам мекунад: Room қисми зиёди коди заруриро барои кор бо пойгоҳи додаҳо истеҳсол мекунад.
  • Дастгирии Coroutines ва Flow: Интегратсияи қулай бо роҳҳои муосири барномасозии асинхронӣ.

Room тафсилоти кор бо SQLite-ро абстраксия мекунад, ва роҳи бехатартар ва қулайтари ҳамкорӣ бо пойгоҳи додаҳои маҳаллӣ пешниҳод мекунад.