Sobes.tech
Junior — Middle

Чӣ гуна намуди компонентро, ки барои нигоҳдории маълумотҳо Room-ро истифода мебарад, муайян кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Компоненте, ки Room-ро барои нигоҳдории маълумот истифода мебарад, одатан қисми қабати маълумот (Data Layer) дар архитектураи барнома мебошад. Бештар ин:

  • Repository (Захира) — синфе, ки логикаи дастрасӣ ба маълумотро пинҳон мекунад ва бо DAO-и Room муошират мекунад.
  • ViewModel — метавонад аз repository барои гирифтани маълумот истифода кунад ва онҳоро ба UI пешниҳод кунад.

Барои муайян кардани навъи компонент, бояд тафтиш кард, ки оё он дорои:

  • Анотацияҳои Room (масалан, @Entity, @Dao) — инҳо синфҳои модели маълумот ва интерфейсҳои дастрасӣ мебошанд.
  • Логикаи кор бо база тавассути DAO — ин repository мебошад.

Маслиҳат барои муайян:

// DAO — интерфейси дастрасӣ ба маълумот
@Dao
interface UserDao {
    @Query("SELECT * FROM users")
    fun getAllUsers(): LiveData<List<User>>
}

// Repository — синф, ки аз DAO истифода мекунад
class UserRepository(private val userDao: UserDao) {
    val allUsers: LiveData<List<User>> = userDao.getAllUsers()
}

// ViewModel — таъминкунандаи маълумот барои UI
class UserViewModel(private val repository: UserRepository) : ViewModel() {
    val users: LiveData<List<User>> = repository.allUsers
}

Аз ин рӯ, компонент бо Room одатан DAO ва repository аст, ва ViewModel — истеъмолкунандаи ин маълумотҳо мебошад.