Sobes.tech
Junior

Room kütüphanesi nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Room, Android üzerinde veritabanına erişimi kolaylaştırmak için SQLite üzerinde soyut bir katman sağlayan kalıcı bir kütüphanedir. Mimari Bileşenlerin bir parçasıdır ve derleme sırasında sorguların daha katı bir şekilde doğrulanmasını sağlar.

Room'un temel bileşenleri:

  • Entity: Veritabanındaki bir tabloyu temsil eden sınıf. @Entity ile anotlanır. Saklanması gereken her Entity alanı ya public alan olmalı ya da public getter'a sahip olmalıdır.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Veritabanıyla etkileşim için metodlar içeren arayüz veya soyut sınıf. @Dao ile anotlanır.
    @Dao
    interface UserDao {
        @Query("SELECT * FROM users WHERE id = :userId")
        fun getUserById(userId: Int): User?
    
        @Insert(onConflict = OnConflictStrategy.IGNORE)
        suspend fun insertUser(user: User)
    }
    
  • Database: RoomDatabase'den türeyen soyut sınıf. Entity ve DAO'yu bağlar ve DAO'ya erişim noktaları sağlar. @Database ile anotlanır.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Room'un avantajları:

  • Derleme zamanında doğrulama: SQL sorgularını derleme sırasında kontrol eder, bu da çalışma zamanındaki hataları azaltır.
  • Mimari Bileşenlerle daha kolay entegrasyon: LiveData ve Paging Library ile kolayca kullanılabilir.
  • Boilerplate kodu azaltma: Room, veritabanı ile çalışma için gereken büyük kısmı otomatik olarak üretir.
  • Coroutines ve Flow desteği: Modern asenkron programlama yaklaşımlarıyla uygun entegrasyon sağlar.

Room, SQLite ile çalışma detaylarını soyutlar ve yerel veritabanıyla etkileşimi daha güvenli ve kullanışlı hale getirir.