Sobes.tech
Junior

O que é a biblioteca Room?

sobes.tech IA

Resposta da IA

Room é uma biblioteca persistente que fornece uma camada abstrata sobre o SQLite para facilitar o acesso ao banco de dados no Android. Ela faz parte dos Componentes de Arquitetura e garante uma verificação mais rigorosa das consultas durante a compilação.

Componentes principais do Room:

  • Entity: Classe que representa uma tabela no banco de dados. Anotada com @Entity. Cada campo da Entity que deve ser salvo deve ser ou um campo público ou ter um getter público.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Interface ou classe abstrata contendo métodos para interagir com o banco de dados (inserções, atualizações, exclusões, consultas). Anotada com @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: Classe abstrata que herda de RoomDatabase. Conecta Entity e DAO, fornecendo pontos de acesso ao DAO. Anotada com @Database.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Vantagens do Room:

  • Verificação em tempo de compilação: Verifica as consultas SQL durante a compilação, o que reduz erros em tempo de execução.
  • Integração mais fácil com os Componentes de Arquitetura: Fácil de usar com LiveData e Paging Library.
  • Redução do código boilerplate: Room gera a maior parte do código necessário para trabalhar com o banco de dados.
  • Suporte para Coroutines e Flow: Integração conveniente com abordagens modernas de programação assíncrona.

Room abstrai os detalhes de trabalho com SQLite, oferecendo uma maneira mais segura e conveniente de interagir com o banco de dados local.