Junior — Middle
Jak określić typ komponentu korzystającego z Room do przechowywania danych?
sobes.tech AI
Odpowiedź od AI
Komponent korzystający z Room do przechowywania danych zazwyczaj jest częścią warstwy danych (Data Layer) w architekturze aplikacji. Najczęściej jest to:
- Repozytorium (Repository) — klasa, która enkapsuluje logikę dostępu do danych i komunikuje się z DAO Room.
- ViewModel — może korzystać z repozytorium, aby pobierać dane i udostępniać je interfejsowi użytkownika.
Aby określić typ komponentu, należy sprawdzić, czy zawiera:
- Adnotacje Room (np. @Entity, @Dao) — są to klasy modelu danych i interfejsy dostępu.
- Logikę pracy z bazą danych przez DAO — to jest repozytorium.
Przykład definicji:
// DAO — interfejs dostępu do danych
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAllUsers(): LiveData<List<User>>
}
// Repozytorium — klasa korzystająca z DAO
class UserRepository(private val userDao: UserDao) {
val allUsers: LiveData<List<User>> = userDao.getAllUsers()
}
// ViewModel — dostarcza dane UI
class UserViewModel(private val repository: UserRepository) : ViewModel() {
val users: LiveData<List<User>> = repository.allUsers
}
W związku z tym, komponent z Room to zazwyczaj DAO i repozytorium, a ViewModel jest konsumentem tych danych.