Sobes.tech
Junior — Middle

Ինչպե՞ս որոշել տվյալների պահպանումը համար Room-ով օգտագործող կոմպոնենտի տեսակը։

sobes.tech AI

Պատասխան AI-ից

Room-օ օգտագործող բաղադրիչը սովորաբար տվյալների շերտի (Data Layer) մաս է՝ ծրագրի ճարտարապետությունում: Ամենատարածվածը՝

  • Repository (Պահոց) — դաս, որը ծածկում է տվյալների մուտքի տրամաբանությունը և շփվում է Room DAO-ի հետ:
  • 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-ը՝ այդ տվյալների սպառողը։