Junior
Čo je knižnica Room?
sobes.tech AI
Odpoveď od AI
Room je trvalá knižnica, ktorá poskytuje abstraktnú vrstvu nad SQLite na zjednodušenie prístupu k databáze na Android. Je súčasťou komponentov architektúry a zabezpečuje prísnejšiu kontrolu dotazov počas kompilácie.
Hlavné komponenty Room:
- Entity: Trieda, ktorá predstavuje tabuľku v databáze. Označená
@Entity. Každé pole Entity, ktoré má byť uložené, musí byť buď verejné pole, alebo mať verejný getter.@Entity(tableName = "users") data class User( @PrimaryKey val id: Int, val name: String ) - DAO (Data Access Object): Rozhranie alebo abstraktná trieda obsahujúca metódy na interakciu s databázou (vloženie, aktualizácia, odstránenie, dotazy). Označená
@Dao.@Dao interface UserDao { @Query("SELECT * FROM users WHERE id = :userId") fun getUserById(userId: Int): User? @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun insertUser(user: User) } - Database: Abstraktná trieda, ktorá dedí od
RoomDatabase. Spája Entity a DAO, poskytujúc body prístupu k DAO. Označená@Database.@Database(entities = [User::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
Výhody Room:
- Kontrola počas kompilácie: Kontroluje SQL dotazy počas kompilácie, čím znižuje počet chýb počas behu.
- Jednoduchšia integrácia s komponentmi architektúry: Jednoduché na použitie s LiveData a Paging Library.
- Zníženie boilerplate kódu: Room generuje väčšinu potrebného kódu na prácu s databázou.
- Podpora pre Coroutines a Flow: Pohodlná integrácia s modernými prístupmi k asynchrónnemu programovaniu.
Room abstrahuje detaily práce s SQLite, ponúkajúc bezpečnejší a pohodlnejší spôsob interakcie s lokálnou databázou.