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-ը՝ այդ տվյալների սպառողը։