Room Kütüphanesinin Kullanımı

Yazılım projelerinin  dinamik olduğu durumlarda, yazılımcılar,  verilerini veritabanlarında  barındırır.  Yazılım dünyasında, çok çeşitli veritabanı  sistemleri bulunmaktadır. Biz Android yazılımcıları da,  şuana kadar  Content Provider aracılığı ile SQLite veritabanını kullanırdık. Google I/O 2017 konferansında,  Google,  akıcı veritabanı erişimi sağlayan Room kütüphanesini  duyurmasıyla birlikte veritabanı oluşturma da yeni bir yola girmiş bulunmaktayız.

Bu makalemde ise  Room nedir,Room’un avantajları ve Room kütüphanesinin kullanımını örnekleyen bir anlatım yapacağım.

Room Nedir?

Room, Android uygulamalarınızda veritabanları oluşturmanın yeni bir yoludur. Room, uygulamalarınızda veri depolamak için daha önce yazmak zorunda kalmış olduğunuz çok sayıda kalıp kodu ortadan kaldırır. Room, Java sınıfları ve SQLite arasındaki ORM’dir.

SQLite veritabanında sql çalıştırmak için kullanmanız gereken Cursors ve Loaders sınıfları bulunmaktadır. Fakat Room ile çalışacağınız zaman bu sınıfları kullanmanız gerekmemektedir.

Diğer bir yandan Room, tam teşekküllü bir ORM değildir. Örneğin, Room kullandığınızda, diğer ORM çözümleri gibi nesnelerin karmaşık iç içe yerleştirilmesine izin veremezsiniz.

 

Örnek Uygulama

Room’ un nasıl çalıştığını daha iyi anlamak için bir örnek yapalım. Yapacağımız uygulama, kullanıcıların ad,  soyad ve yaş gibi bilgilerini veritabanına kayıt edecek.

  1. Android Studio ide’sinde yeni bir proje oluşturalım.
  2. Projenizin ana dizininde bulunan  build.gradle dosyasına aşağıda kodu ekleyelim.
  3. Oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek  Room kütüphanesini yüklüyoruz.
  4. Şimdi, ilk önce entity ile User adlı bir tablomuzu tanımlayalım.  Tablonuzdaki  otomatik olarak değerler üretme özelliğine sahip olacak id alanını, primary key olarak ilan etmeniz gerekir. Bu yüzden uid değişkenini, primary key olarak tanımladık. autoGenerate değerinide true yaptık. Böylelikle  Room, tanımlanmış niteliklere sahip bir User tablosu oluşturacaktır.
  5. UserDao adında, veri erişimini sağlayacak interface sınıfı oluşturun. Sınıfı @Dao ek açıklama ile açıklayın. Böylelikle Room kütüphanesi veritabanı ile ilgili metodları oluşturacakdır.Buraya farklı açıklamalar, @Query, @Delete, @Insert, @Update gibi ek açıklamalar kullanabilirsiniz. @Query açıklaması, veritabanında okuma işlemini gerçekleştirmek için kullanılır.
  6. AppDatabase adında bir sınıf oluşturdum. RoomDatabase sınıfını,  AppDatabase ‘na extends yaptım. AppDatabase  sınıfında entity’lerin listesini ve veritabanı sürümünü tanımlayacağız.  Sınıfa @Database ek açıklama ile ekledim.Koda bakalım.
    Artık veritabanının User tablosuna kullanıcı ekleyebilirsiniz.
     

Genel olarak özetlemek gerekirse, Room, uygulamalarınızda veri depolamak için daha önce yazmak zorunda kalmış olduğunuz çok sayıda kalıp kodu ortadan kaldırır. Böylelikle bu yapıyı kullanarak karmaşık ve zorlayıcı veritabanlarını daha kolay uygulayabilir hale gelmiş olduk.

Diğer makalelerime de Smality Mobile Software adındaki yazılım ekibimin sitesinden ulaşabilirsiniz.

http://smality.com/grid-blog/

 

Kaynak

  1. https://medium.com/@ajaysaini.official/building-database-with-room-persistence-library-ecf7d0b8f3e9
  2. https://riggaroo.co.za/android-architecture-components-looking-room-livedata-part-1/
Kategori Genel
Etiketler