Entiteter og DAO-er
Definer tabeller og dataaksessobjekter.
Entiteter og DAO-er er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Android Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Android Academy inneholder totalt 4 leksjoner.
Hva er Room?
Room er et persistensbibliotek som tilbyr et abstraksjonslag over SQLite. Det lar Dem arbeide med databasemaskerader som Kotlin-objekter, med spørringer som kontrolleres ved kompilering.
De tre byggesteinene i Room
- Entity — en tabell, representert som en data class.
- DAO — Data Access Object, definerer spørringer.
- Database — kobler entities og DAO-er sammen (i neste leksjon).
Definere en Entity
Annoter en data class med @Entity. Hver egenskap blir en kolonne.
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val email: String
)Primærnøkler
Hver entity trenger en @PrimaryKey. Bruk autoGenerate for å la Room generere ID-er automatisk.
@Entity
data class Note(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val text: String
)Tilpasse kolonner
Bruk @ColumnInfo for å gi en kolonne nytt navn eller angi dens typeaffinitet.
import androidx.room.ColumnInfo
@Entity
data class User(
@PrimaryKey val id: Int,
@ColumnInfo(name = "full_name")
val name: String
)Hva er en DAO?
En DAO er et grensesnitt annotert med @Dao. Det deklarerer metodene appen Deres bruker til å lese og skrive data. Room genererer implementasjonen for Dem.
Sette inn, oppdatere og slette
Room tilbyr praktiske annoteringer for de grunnleggende operasjonene.
@Dao
interface UserDao {
@Insert
suspend fun insert(user: User)
@Update
suspend fun update(user: User)
@Delete
suspend fun delete(user: User)
}Konfliktstrategier
Når De setter inn en rad som allerede finnes, velger De en strategi med onConflict.
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun upsert(user: User)Egendefinerte spørringer med @Query
Annoteringen @Query lar Dem skrive SQL. Room kontrollerer den ved kompilering mot skjemaet Deres.
@Query("SELECT * FROM users WHERE id = :id")
suspend fun getById(id: Int): User?Hvorfor suspend-funksjoner?
Database-I/O må ikke kjøre på hovedtråden. Når DAO-metoder merkes med suspend, kan Room kjøre dem utenfor hovedtråden når de kalles fra en coroutine, slik at brukergrensesnittet ikke hakker.
Sikkerhet ved kompilering
En viktig fordel med Room er at byggingen mislykkes hvis De skriver et kolonnenavn feil i en @Query. De oppdager feil tidlig, i stedet for ved kjøring.
Hurtigsjekk
Test forståelsen Deres av entities og DAO-er.
Oppsummering
De har lært:
- At
@Entitydefinerer en tabell som en data class med en@PrimaryKey. - At
@Daodeklarerer metoder for spørring, innsetting, oppdatering og sletting. - At SQL i
@Querykontrolleres ved kompilering. - At DAO-metoder bør være
suspendfor I/O utenfor hovedtråden.
Lær deg Kotlin med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 36
- Leksjoner
- 152
Ofte stilte spørsmål
Er leksjonen «Entiteter og DAO-er» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «Entiteter og DAO-er», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Android Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Entiteter og DAO-er»?
Definer tabeller og dataaksessobjekter. Du øver på Android Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Android Academy?
Ingen tidligere erfaring er nødvendig. Android Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Entiteter og DAO-er»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Android Academy-leksjonen?
Ja. Alle Android Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Entiteter og DAO-er
- Room-databaseklassen
- Spørringer og relasjoner
- Observere data med Flow