0Pricing
Android Academy · Lezione

Entità e DAO

Definisca tabelle e oggetti di accesso ai dati.

Entità e DAO è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.

Che cos'è Room?

Room è una libreria di persistenza che fornisce un livello di astrazione sopra SQLite. Consente di lavorare con le righe del database come oggetti Kotlin, usando query verificate in fase di compilazione.

I tre elementi fondamentali di Room

  • Entity — una tabella, rappresentata come data class.
  • DAO — Data Access Object, definisce le query.
  • Database — collega entità e DAO (lezione successiva).

Definire un'Entity

Annoti una data class con @Entity. Ogni proprietà diventa una colonna.

import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String,
    val email: String
)

Chiavi primarie

Ogni entity richiede una @PrimaryKey. Per consentire a Room di generare automaticamente gli ID, usi autoGenerate.

@Entity
data class Note(
    @PrimaryKey(autoGenerate = true)
    val id: Int = 0,
    val text: String
)

Personalizzare le colonne

Usi @ColumnInfo per rinominare una colonna o impostarne il type affinity.

import androidx.room.ColumnInfo

@Entity
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "full_name")
    val name: String
)

Che cos'è un DAO?

Un DAO è un'interfaccia annotata con @Dao. Dichiara i metodi che l'app usa per leggere e scrivere i dati. Room genera automaticamente l'implementazione.

Inserimento, aggiornamento ed eliminazione

Room fornisce annotazioni pratiche per le operazioni di base.

@Dao
interface UserDao {
    @Insert
    suspend fun insert(user: User)

    @Update
    suspend fun update(user: User)

    @Delete
    suspend fun delete(user: User)
}

Strategie di conflitto

Quando inserisce una riga già esistente, scelga una strategia con onConflict.

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun upsert(user: User)

Query personalizzate con @Query

L'annotazione @Query consente di scrivere SQL. Room lo verifica in fase di compilazione rispetto allo schema.

@Query("SELECT * FROM users WHERE id = :id")
suspend fun getById(id: Int): User?

Perché usare funzioni suspend?

L'I/O del database non deve essere eseguito sul thread principale. Contrassegnare i metodi DAO con suspend consente a Room di eseguirli fuori dal thread principale quando vengono chiamati da una coroutine, evitando rallentamenti dell'interfaccia.

Sicurezza in fase di compilazione

Un vantaggio importante di Room: se scrive in modo errato il nome di una colonna in una @Query, la compilazione non va a buon fine. Gli errori vengono rilevati subito, invece che a runtime.

Verifica rapida

Verifichi la Sua comprensione di entity e DAO.

Riepilogo

Ha imparato che:

  • @Entity definisce una tabella come data class con una @PrimaryKey.
  • @Dao dichiara i metodi per query, inserimento, aggiornamento ed eliminazione.
  • Il codice SQL di @Query viene verificato in fase di compilazione.
  • I metodi DAO dovrebbero essere suspend per eseguire l'I/O fuori dal thread principale.

Domande Frequenti

La lezione «Entità e DAO» è gratuita?

Sì — il testo completo di «Entità e DAO» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.

Cosa imparerò in «Entità e DAO»?

Definisca tabelle e oggetti di accesso ai dati. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Android Academy?

Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Entità e DAO»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Android Academy?

Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Entità e DAO
  2. La classe del database Room
  3. Query e relazioni
  4. Osservare i dati con Flow
← Torna a Android Academy