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ę:
@Entitydefiniuje tabelę jako klasę danych z elementem@PrimaryKey.@Daodeklaruje metody zapytań, wstawiania, aktualizowania i usuwania.- SQL w
@Queryjest 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.