0Pricing
Android Academy · Aula

A classe de banco de dados Room

Crie e acesse seu banco de dados.

A classe de banco de dados Room é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Reunindo tudo

A classe do banco de dados é o principal ponto de acesso. Ela lista suas entidades, declara a versão e expõe seus DAOs.

A anotação @Database

Crie uma classe abstrata que estenda RoomDatabase e anote-a com @Database.

import androidx.room.Database
import androidx.room.RoomDatabase

@Database(
    entities = [User::class],
    version = 1
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Listando entidades e versão

A matriz entities informa ao Room quais tabelas criar. O número de version acompanha as alterações do esquema para as migrações.

Expondo DAOs

Para cada DAO, declare uma função abstrata que retorne o tipo desse DAO. O Room a implementa.

abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDao

Construindo o banco de dados

Use Room.databaseBuilder para criar uma instância. Ele precisa do contexto do aplicativo, da classe e de um nome para o banco de dados.

val db = Room.databaseBuilder(
    context.applicationContext,
    AppDatabase::class.java,
    "app.db"
).build()

Transforme-o em um singleton

Criar um banco de dados é uma operação cara, portanto crie uma única instância para todo o aplicativo. Um padrão comum usa um objeto companion com um getter sincronizado.

companion object {
    @Volatile private var INSTANCE: AppDatabase? = null
    fun get(context: Context): AppDatabase =
        INSTANCE ?: synchronized(this) {
            INSTANCE ?: build(context).also { INSTANCE = it }
        }
}

Por que um singleton é importante

Várias instâncias do banco de dados abririam várias conexões para o mesmo arquivo, causando inconsistência e desperdício de memória. Uma única instância compartilhada mantém uma única fonte de verdade.

Fornecendo-o com o Hilt

Em aplicativos reais, geralmente você fornece o banco de dados por meio da injeção de dependências (abordada no curso de Hilt), em vez de usar um singleton manual.

@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
    Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
        .build()

Alterações de esquema e migrações

Quando você altera uma entidade, incremente version e forneça uma Migration que descreva o SQL para transformar os dados antigos.

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(db: SupportSQLiteDatabase) {
        db.execSQL("ALTER TABLE users ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
    }
}

Migração destrutiva

Durante o desenvolvimento inicial, você pode usar fallbackToDestructiveMigration(), que exclui e recria as tabelas em vez de migrá-las. Nunca publique isso em produção com dados reais de usuários.

Acessando DAOs

Depois de obter a instância do banco de dados, obtenha um DAO e chame seus métodos dentro de uma corrotina.

val dao = db.userDao()
viewModelScope.launch {
    dao.insert(User(1, "Ada", "ada@x.com"))
}

Verificação rápida

Teste sua compreensão sobre a classe do banco de dados.

Recapitulação

Você aprendeu:

  • @Database lista entidades, define uma versão e expõe DAOs.
  • Construa-o com Room.databaseBuilder como um singleton.
  • As alterações de esquema precisam de uma versão incrementada e de uma Migration.

Perguntas Frequentes

A aula “A classe de banco de dados Room” é grátis?

Sim — o texto completo de “A classe de banco de dados Room” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “A classe de banco de dados Room”?

Crie e acesse seu banco de dados. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “A classe de banco de dados Room”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entidades e DAOs
  2. A classe de banco de dados Room
  3. Consultas e relacionamentos
  4. Observando dados com Flow
← Voltar para Android Academy