Room Nedir ? Kotlin’de Kullanım

Mobil uygulamalarda veritabanında lokalde tutulması istenen veriler için birçok veritabanı kütüphanesi kullanılmaktadır.

Bunlardan en popüleri SQLite’dir. Bunu kullanmak için SQLiteOpenHelper sınıfı yaratılıp çağrılır. Ve bu helper sınıfı üzerinde insertdelete ve update işlemleri gerçekleştirilirdi. Bunu kullanmak hayli zor ve karmaşık olabiliyordu.

Google OI 2017’de ise Room kütüphanesini tanıttı. Daha kararlı ve sağlam bir şekilde veritabanı oluşturmasını sağlamaktadır.

Image for post

Room’un üç ana bileşeni vardır. Bunlar;

  • Database : Database (DB)’i temsil etmektedir. SQLite DB ile bağlantısı olan bir nesnedir. Tüm aksiyonlar bunun üzerinden gerçekleşir.
  • Entity: Room içinde veritabanında oluşturulan bir tabloyu temsil eder.
  • DAO: Veritabanın erişim yöntemlerini içeren bir interfacedir.

Örnek Kullanım

Room İmplements

Model Oluşturma (Entities)

  • title: Notun başlığıdır. String türünde veri tutuyoruz.
  • subject: Notun konusudur. Yine string türünde veri tutuyoruz.
  • description: Notun açıklamasıdır. String türünde veri tutulur.
  • Veritabanının bir varlığını temsil eden tüm sınıflara @Entity olarak belirtilmesi gerekir.
  • @PrimaryKey: Bu bizim primarykey yani birincil anahtarımızdır. Otomatik olarak generate eder yani id olarak 0’dan basmaya başlar.
  • @ColumnInfo: oluşturulan sütunlardır. Tek sütundan fazla oluşturulmasını istiyorsanız başına @ColumnInfo eklemeniz gerekir.

DAO

DAO’lar, Room’u çalıştırırken verilerinize erişmek için kullanılır. Her DAO, verilerinizi işlemek için bir yöntem içermesi gerekir. Bu yöntemler, veriyi eklemek için INSERT, veriyi getirmek ve silmesi @Query’dir. Yani ekleme, güncelleme, silme.

DAO sınıfı abstract bir sınıftır. Bir kere oluşturmamız yeterlidir.

getAllNotes() : Burada tüm notları veritabanından çağıran bir metodu.

insertAll(): Veritabanına veri eklemek için kullanılan metoddur.

deletebyIDBelirtilen id’ye göre veritabanında sorgulama yapar ve ilgili sütunu siler.

Database

AppDatabase class’ı DB’yi temsil eder ve SQLite DB ile bağlantı kurar.

  • Abstract sınıf olan RoomDatabase() sınıfından extend edilmesi gerekir.
  • @Database ile oluşan veritabanın tüm sınıflara erişmesinin listesini alır ve veritabanın versiyonun belirtilmesi gerekir.
  • Eğer veritabanında bir genişletme veya değişiklik yapıldığı taktirde bu versiyon kodunda değişiklik yapılması gerekir.

MainActivity.kt

Burada ne yapıyoruz?

  • İlk olarak “notes” isimli list oluşturduktan sonra AppDatabase ile veritabanı isteğini oluşturup, içindeki veriyi notes isimli listeye ekliyoruz.
  • notes=db.notedao().getAllNotes() : getAllNotes metodu ile MainActivity’de veritabanınan tüm verileri çektik.
  • Recyclerview içinde gösteriyoruz. Fab ile yeni bir activity açılıyor ve orada bir not oluşturuyoruz.
  • DB’den aldığımız tüm cinsiyetlerin adını birleştiriyoruz ve TextView metnini bu değere göre ayarlıyoruz.

MainActivity görünümü..

Image for post

CreateNoteActivity’da Not Ekleme

  • AppDatabase ile “notes” isimli veritabanını çağırdık.
  • Note() içine edittext’den gelen inputları yolladık. Bunlar; başlık, konu ve açıklama.
  • db.notedao().insertAll() ile note’u buraya parametre olarak yollayınca ilgili sütunlara Room içinde veriyi yazmaktadır.
  • Eğer veritabanına kaydedilirse intent ile MainActivty’e geri döner ve yazılan veriyi gösterir.
Image for post

Çıktı:

Image for post

Github Reposu: Room

Kaynaklar

https://developer.android.com/topic/libraries/architecture/room?hl=ru

İnternet sitesi https://www.merttoptas.com
Yazı oluşturuldu 17

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön
%d blogcu bunu beğendi: