0Pricing
Android Academy · Ders

Room Veritabanı

Room ile yapılandırılmış verileri yerel olarak kalıcı hâle getirin. Varlıkları, DAO'ları ve Database sınıfını tanımlayın. SQL ile sorgulayın, sonuçları LiveData veya Flow ile gözlemleyin.

Room Veritabanı, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 6 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 6 dersten oluşur.

Room Nedir

Room, Google'ın Android için önerdiği kalıcı depolama kütüphanesidir. Size şunları sunan bir SQLite sarmalayıcısıdır:

  • Derleme zamanında doğrulanan tür güvenli SQL sorguları
  • Kotlin eş yordam desteği
  • LiveData / Flow bütünleştirmesi
  • Şema değişiklikleri için geçiş desteği

Room'un Üç Bileşeni

Room üç ek açıklamadan oluşur:

  • @Entity — bir veritabanı tablosuyla eşleşen veri sınıfı
  • @Dao (Veri Erişim Nesnesi) — SQL sorguları içeren bir arayüz
  • @Database — her şeyi bir araya getiren ana veritabanı sınıfı

Room Bağımlılıklarını Ekleme

Room'u app/build.gradle dosyasına ekleyin:

// app/build.gradle
plugins {
    id 'kotlin-kapt'  // needed for Room annotation processor
}

dependencies {
    val roomVersion = "2.6.1"
    implementation "androidx.room:room-runtime:$roomVersion"
    kapt "androidx.room:room-compiler:$roomVersion"
    implementation "androidx.room:room-ktx:$roomVersion" // coroutine support
}

Entity Tanımlama

Bir veritabanı tablosu oluşturmak için veri sınıfına @Entity ek açıklamasını uygulayın:

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

@Entity(tableName = "notes")
data class Note(
    @PrimaryKey(autoGenerate = true)
    val id: Int = 0,
    val title: String,
    val body: String,
    val createdAt: Long = System.currentTimeMillis()
)

// Each field = one column in the database table
// @PrimaryKey autoGenerate = Room assigns the id automatically

DAO Oluşturma

Sorguları bir DAO arayüzünde tanımlayın. Room uygulamayı sizin için oluşturur:

import androidx.room.*
import kotlinx.coroutines.flow.Flow

@Dao
interface NoteDao {

    @Query("SELECT * FROM notes ORDER BY createdAt DESC")
    fun getAllNotes(): Flow<List<Note>>  // emits new list whenever data changes

    @Query("SELECT * FROM notes WHERE id = :noteId")
    suspend fun getNoteById(noteId: Int): Note?

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insert(note: Note)

    @Update
    suspend fun update(note: Note)

    @Delete
    suspend fun delete(note: Note)
}

Veritabanı Oluşturma

@Database sınıfı Room'a giriş noktasıdır. Bunu bir kez oluşturun ve tekil örnek olarak tutun:

import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import android.content.Context

@Database(entities = [Note::class], version = 1, exportSchema = false)
abstract class NoteDatabase : RoomDatabase() {

    abstract fun noteDao(): NoteDao

    companion object {
        @Volatile private var INSTANCE: NoteDatabase? = null

        fun getInstance(context: Context): NoteDatabase {
            return INSTANCE ?: synchronized(this) {
                Room.databaseBuilder(
                    context.applicationContext,
                    NoteDatabase::class.java,
                    "note_database"
                ).build().also { INSTANCE = it }
            }
        }
    }
}

ViewModel'de Room Kullanma

Eş yordamları kullanarak DAO'yu bir ViewModel'e bağlayın:

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch

class NoteViewModel(private val dao: NoteDao) : ViewModel() {

    val notes = dao.getAllNotes()  // Flow — auto-updates when DB changes

    fun addNote(title: String, body: String) {
        viewModelScope.launch {
            dao.insert(Note(title = title, body = body))
        }
    }

    fun deleteNote(note: Note) {
        viewModelScope.launch {
            dao.delete(note)
        }
    }
}

Kullanıcı Arayüzünde Room Verilerini Gözlemleme

Room'dan gelen Flow'u Activity veya Fragment'ınızda toplayın:

import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch

class NoteActivity : AppCompatActivity() {
    private val viewModel: NoteViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...

        lifecycleScope.launch {
            viewModel.notes.collect { notes ->
                adapter.submitList(notes)  // update RecyclerView
            }
        }
    }
}

Veritabanı Geçişleri

Entity'nizi değiştirdiğinizde (sütun eklemek veya tabloyu yeniden adlandırmak gibi), mevcut kullanıcı verilerinin kaybolmaması için bir geçiş sağlamanız gerekir.

@Database(version = 2) içindeki sürüm numarasını artırın ve eski şemayı yenisine dönüştürecek SQL'i içeren bir Migration nesnesi tanımlayın.

Hızlı Kontrol

Bir arayüz yöntemini SQL SELECT sorgusu olarak işaretleyen Room ek açıklaması hangisidir?

Özet: Room Veritabanı

Artık yerel veri kalıcılığına sahip uygulamalar oluşturabilirsiniz:

  • @Entity — veri sınıfı → veritabanı tablosu
  • @Dao — @Query, @Insert, @Delete içeren arayüz
  • @Database — tekil giriş noktası
  • Canlı güncellemeler için DAO'dan Flow<List> döndürün
  • DAO'yu ViewModel'den viewModelScope.launch kullanarak çağırın

Sırada: eş yordamlarla geri çağırmalar olmadan eş zamanlı kod yazma var.

Sıkça Sorulan Sorular

“Room Veritabanı” dersi ücretsiz mi?

Evet — “Room Veritabanı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 6 dersten oluşur.

“Room Veritabanı” dersinde ne öğreneceğim?

Room ile yapılandırılmış verileri yerel olarak kalıcı hâle getirin. Varlıkları, DAO'ları ve Database sınıfını tanımlayın. SQL ile sorgulayın, sonuçları LiveData veya Flow ile gözlemleyin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 2. dersidir.

“Room Veritabanı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. ViewModel ve LiveData
  2. Room Veritabanı
  3. Coroutines ve Suspend Fonksiyonları
  4. Repository Deseni
  5. Navigation Bileşeni
  6. Hilt ile Bağımlılık Enjeksiyonu
← Android Academy Sayfasına Dön