Junior
Co je knihovna Room?
sobes.tech AI
Odpověď od AI
Room je trvalá knihovna, která poskytuje abstraktní vrstvu nad SQLite pro zjednodušení přístupu k databázi na Androidu. Je součástí komponent architektury a zajišťuje přísnější kontrolu dotazů během kompilace.
Hlavní komponenty Room:
- Entity: Třída představující tabulku v databázi. Je označena
@Entity. Každé pole Entity, které má být uloženo, musí být buď veřejné pole, nebo mít veřejný getter.@Entity(tableName = "users") data class User( @PrimaryKey val id: Int, val name: String ) - DAO (Data Access Object): Rozhraní nebo abstraktní třída obsahující metody pro interakci s databází (vkládání, aktualizace, mazání, dotazy). Je označena
@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í třída, která dědí z
RoomDatabase. Spojuje Entity a DAO, poskytuje přístupové body k DAO. Je označena@Database.@Database(entities = [User::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
Výhody Room:
- Kontrola při kompilaci: Kontroluje SQL dotazy během kompilace, což snižuje počet chyb při běhu.
- Snadnější integrace s komponentami architektury: Snadno se používá s LiveData a Paging Library.
- Snížení boilerplate kódu: Room generuje většinu potřebného kódu pro práci s databází.
- Podpora pro Coroutines a Flow: Pohodlná integrace s moderními přístupy k asynchronnímu programování.
Room abstrahuje detaily práce s SQLite a nabízí bezpečnější a pohodlnější způsob interakce s lokální databází.