Sobes.tech
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.