0Pricing
Android Academy · Lekcja

Encje i DAO

Definiuj tabele i obiekty dostępu do danych

Encje i DAO to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Czym jest Room?

Room to biblioteka utrwalania danych, która zapewnia warstwę abstrakcji nad SQLite. Umożliwia pracę z wierszami bazy danych jako obiektami Kotlin, a zapytania są sprawdzane w czasie kompilacji.

Trzy podstawowe elementy Room

  • Entity — tabela reprezentowana jako data class.
  • DAO — Data Access Object, definiuje zapytania.
  • Database — łączy encje i obiekty DAO (w następnej lekcji).

Definiowanie encji

Oznacz klasę danych adnotacją @Entity. Każda właściwość staje się kolumną.

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

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

Klucze główne

Każda encja potrzebuje elementu @PrimaryKey. Aby Room automatycznie generował identyfikatory, użyj autoGenerate.

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

Dostosowywanie kolumn

Użyj @ColumnInfo, aby zmienić nazwę kolumny lub ustawić jej affinity typu.

import androidx.room.ColumnInfo

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

Czym jest DAO?

DAO to interfejs oznaczony adnotacją @Dao. Deklaruje metody, których aplikacja używa do odczytu i zapisu danych. Room wygeneruje ich implementację.

Wstawianie, aktualizowanie i usuwanie

Room udostępnia wygodne adnotacje do wykonywania podstawowych operacji.

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

    @Update
    suspend fun update(user: User)

    @Delete
    suspend fun delete(user: User)
}

Strategie konfliktów

Podczas wstawiania wiersza, który już istnieje, wybierz strategię za pomocą onConflict.

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

Niestandardowe zapytania za pomocą @Query

Adnotacja @Query umożliwia pisanie zapytań SQL. Room sprawdza je w czasie kompilacji względem schematu.

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

Dlaczego funkcje suspend?

Operacje wejścia-wyjścia bazy danych nie mogą być wykonywane w głównym wątku. Oznaczenie metod DAO jako suspend pozwala Room uruchamiać je poza głównym wątkiem, gdy są wywoływane z korutyny, zapobiegając zacinaniu interfejsu.

Bezpieczeństwo w czasie kompilacji

Jedną z głównych zalet Room jest to, że jeśli wpiszesz niepoprawną nazwę kolumny w @Query, kompilacja się nie powiedzie. Błędy są wykrywane wcześnie, zamiast dopiero w czasie działania.

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat encji i DAO.

Podsumowanie

Nauczyłeś się:

  • @Entity definiuje tabelę jako klasę danych z elementem @PrimaryKey.
  • @Dao deklaruje metody zapytań, wstawiania, aktualizowania i usuwania.
  • SQL w @Query jest sprawdzany w czasie kompilacji.
  • Metody DAO powinny być oznaczone jako suspend, aby operacje wejścia-wyjścia odbywały się poza głównym wątkiem.

Często zadawane pytania

Czy lekcja „Encje i DAO” jest bezpłatna?

Tak — pełny tekst „Encje i DAO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Encje i DAO”?

Definiuj tabele i obiekty dostępu do danych Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Encje i DAO”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Encje i DAO
  2. Klasa bazy danych Room
  3. Zapytania i relacje
  4. Obserwowanie danych za pomocą Flow
← Powrót do Android Academy