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:
@Entitydefinisce una tabella come data class con una@PrimaryKey.@Daodichiara i metodi per query, inserimento, aggiornamento ed eliminazione.- Il codice SQL di
@Queryviene verificato in fase di compilazione. - I metodi DAO dovrebbero essere
suspendper 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.