Junior — Middle
Hogyan határozható meg, hogy milyen típusú komponens használja a Room-ot az adatok tárolására?
sobes.tech MI
Válasz az MI-től
Egy olyan komponens, amely a Room-ot használja az adatok tárolására, általában az alkalmazás architektúrájában az Adat Réteg (Data Layer) részét képezi. Leggyakrabban ez:
- Repository (Tároló) — egy osztály, amely beágyazza az adatokhoz való hozzáférés logikáját, és kommunikál a Room DAO-val.
- ViewModel — használhatja a repository-t az adatok beszerzéséhez és azok UI-nak való átadásához.
A komponens típusának meghatározásához meg kell nézni, tartalmazza-e:
- Room annotációkat (pl. @Entity, @Dao) — ezek az adatminta osztályok és hozzáférési interfészek.
- A DAO-n keresztüli adatbázissal való munkát — ez egy repository.
Definíciós példa:
// DAO — adat-hozzáférési interfész
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAllUsers(): LiveData<List<User>>
}
// Repository — osztály, amely a DAO-t használja
class UserRepository(private val userDao: UserDao) {
val allUsers: LiveData<List<User>> = userDao.getAllUsers()
}
// ViewModel — adatokat szolgáltat a UI-nak
class UserViewModel(private val repository: UserRepository) : ViewModel() {
val users: LiveData<List<User>> = repository.allUsers
}
Ezért a Room-os komponens általában a DAO és a repository, míg a ViewModel ezeknek az adatoknak a fogyasztója.