Room Kütüphanesi(Room Persistence Library) Nedir ? Nasıl Kullanılır ?-Kotlin

Ömer Ateş
3 min readJan 13, 2019

--

Mobil Yazılım dünyasında cihazlarda istenilen bilgileri depolamak için birkaç veri tabanı kullanmaktayız.Bunlardan biri SQLite’tır.Google OI’17 gerçekleşmesi ile biz geliştiricilere SQLite kullanımını daha da kolaylaştıracak fazla kod kalabalığından kurtaracak Room Kütüphanesi duyurulmuştu.

Room Kütüphanesi sayesinde SQLite ile oluşturduğumuz bir veri tabanın da veri ekleme,silme,güncelleme ve listeleme gibi işlemleri yaparken önümüze çıkan hataları bulmak daha kolay hale gelmektedir.

Bu yazıda bahsettiğimiz kütüphaneyi kullanarak sadece ekleme ve listeleme işlemi yapan bir not defteri uygulaması yapacağız.

Öncelikle yeni bir Basic Activity projesi oluşturalım.

Kodlama kısmına geçmeden önce kütüphanemizi kullanabilmek için gerekli bağlantıları yapmamız gerek.

Build gradle(Module:app) içerisine

apply plugin: 'kotlin-kapt'

ve dependencies kısmına ise

implementation "android.arch.persistence.room:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"

Ayrıca build gradle(Project:RoomDatabaseSimpleApp) içindeki buildscript kısmında google() bulunmasına dikkat edelim.

Şimdi kodlama kısmına geçebiliriz 😊

Listemiz için content_main.xml içine Recyclerview ekleyelim.

Recyclerview için satır layoutumuzu da oluşturalım.

Şimdi ise kayıt işlemi yapmak için yeni bir create_note adında bir activity oluşturalım.

Kayıt edeceğimiz not için başlık,konu ve açıklama değişkenleri için modelimizi oluşturalım.

Şimdi burada yeni gördüğümüz birkaç ögeyi açıklayalım:

@ Entity:Oluşturacağımız sınıfın bizim veri tabanında karşılık gelen bir tablo olduğunu gösteriyoruz.Ayrıca tablename parametresi ile tablomuzun ismini de belirtebiliriz.

@ColumnInfo:Sütunlarımızı bu etiket ile oluşturacağız.Eğer özel bir isimlendirme kullanmak istersek name parametresini kullanabiliriz.

@ NonNull: Tablomuza eklediğimiz kayıtları boş geçmek istemiyorsak bu etiketi kullanacağız.

@PrimaryKey:Kayıt ettiğimiz her bir verilere ulaşmak için tablomuzda birincil anahtar da dediğimiz kimlik görevi görmesini sağlar.Ayrıca tablomuzda her satırın otomatik artması için autoGenerate parametresine true değerini veriyoruz.

Şimdi NoteDao adında bir interface oluşturalım.

@ Dao:Kullanmak istediğimiz SQL sorgularını burada belirttiğimizi gösteririz.Örneğin ekleme işleminde yeni bir @ Insert sorgusu oluşturur.Biz interface oluşturduk istersek abstract class da oluşturabilirdik.Aslında bir nevi kodumuzda API oluşturuyor diyebiliriz.

@ Insert,@Delete,@Update,SQL sorgusu yazmadan gerekli istenilen işlemleri yapmamıza olanak sağlar lakin sorgumuzu özelleştirmek istiyorsak @ Query etiketini kullanabiliriz.Örneğin:

@Query("DELETE FROM word_table")

Tüm verilerimizi çekmek için getAllNots() adında bir method tanımladık ve bu method bize liste döndürmesini istedik.Ayrıca insertAll() adında bir method oluşturarak not eklemek istediğimizde bu method işlev görmesini sağladık.

Bir diğer önemli kısım ise veritabanını oluşturacağımız kısım :AppDatabase.kt

Burada @ Database ile veritabanımızı oluşturacağımızı bildiriyoruz.içindeki parametrelere bakarsak: entities daha demin oluşturduğumuz tablo ve içindeki sütunlarımızı burada belirtmekteyiz. version ise ilk oluşturulduğunda bir değer girmeliyiz.Veri tabanı şemasında herhangi bir değişiklik yaptığımızda bu değer arttırmalıyız.Class’ ayrıca RoomDatabase() den extend ettiğimize dikkat edelim.

Recyclerview için adapter’ımızı oluşturalım.

Kayıt ekleyeceğimiz activity:

Burada veri tabanımızdan bir tane db adında bir nesne oluşturuyoruz.Kayıt butonuna basıldığında ise girdileri alarak inserAll() methodu ile veri tabanımıza yazdırıyoruz.

MainActivity ise

kodlarını yazdık.Burada tekrardan veri tabanımıza erişim için nesne oluşturduk. getAllNotes() ile diziye verileri getirip listemize yolladık.

Evet Arkadaşlar dilimin döndüğü kadar Room kütüphanesini anlatmaya çalıştım.Umarım faydası olmuştur.Kodların tamamına bakmak isterseniz buradan ulaşabilirsiniz😊

--

--