Android Realm Veritabanı Kullanımı

Java Kotlin Eğitimi

Merhaba arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslere bugün sizlere Realm Veritabanı Kullanımı nı  anlatan bir uygulama yapacağım.

Realm açık kaynaklı veritabanı yönetim sistemidir. Realm veritabanı kullanımı kolay, sqlite veritabanına göre query oluşturma konusunda daha performanslı bir yapıya sahip. Dokümantasyon olarak gerçekten özenle hazırlanmış ve her ayrıntıya değinen bir anlatım da realm kendi sitesinde mevcut. Realm veritabanı ; Java, Swift, Objective-C, Javascript ve .NET gibi bir çok yazılıma da destek vermektedir.

Java Kotlin Eğitimi

Android Studio 3.1 versiyonu ile projemizi oluşturmaya başlayacağız eğer Android Studio nuz güncel değilse ve buradaki kaynak kodu indirip denemeye çalışırsanız hata alabilirsiniz.

Realm kullanabilmek için bazı ön koşullar bulunmaktadır :

  • Android Studio 1.5.1 veya üstü
  • JDK 7.0 veya üstü
  • Güncel Android SDK sürümü
  • Android API Level 9 ve üstü

Realm ile kullanılabilecek özellikler aşağıdaki şekilde yer almaktadır.

Android Studio da yeni bir proje oluşturuyoruz daha sonra proje seviyesindeki build.gradle dosyamızı aşağıdaki gibi düzenliyoruz. dependencies kısmında gördüğünüz gibi realm plugin kısmını tanımladık.

Project level: build.gradle

Daha sonra uygulama seviyesinde bulunan build.gradle dosyamıza aşağıdaki kod parçacığını ekliyoruz.

Aşağıda gördüğünüz gibi ilgili kodu ekledik dependencies kısmında uygulamamızda kullanacağımız gerekli kütüphaneleri import ettik. Android Studio 3.1 güncellemesi ile artık “compile” yerine “implementation” kullandığımızı görüyorsunuz.  ( not: 2018 sonu itibarı ile de artık compile kullanımı kalkacak o yüzden şimdilik compile ile kütüphaneleri çekseniz bile artık “implementation” ile kullanmaya dikkat edelim. )

build.gradle

Şimdi Application sınıfımızı oluşturacağız. “denemeapp” ismini verdiğimiz Realm Veritabanı konfigürasyonunu aşağıda gördüğünüz gibi belirtiyoruz.

RealmApplication.java

Daha sonra oluşturduğumuz bu application sınıfını AndroidManifest.xml de tanımlamamız gerekiyor. application tag i içinde android:name de yarattığımız application sınıfını tanımladık.

AndroidManifest.xml

Projemizin genel olarak şablonu aşağıdadır. Kullanacağımız her modülü ayrı paketler altına tanımladık.

Şimdi uygulamamızda kullanacağımız model yapısını oluşturalım. Bu uygulamamızda kişiler üzerinden gideceğimiz için PersonTable adını verdiğimiz bir model oluşturuyoruz. Bu sınıfımızı RealmObject sınıfından extend ettik. Veritabanı işlemlerinde kullandığımız primary key kavramı burada da karşımıza çıkıyor aşağıda gördüğünüz gibi id değerimizi @PrimaryKey ile bu özelliği kazandırıyoruz. Daha sonra name, surname, department ve age gibi parametreleri de tanımladık. @RealmClass tagini kullanarak da oluşturduğumuz bu sınıfın Realm sınıfına ait olduğunu gösterdik.

PersonTable.java

RecylerView de tanımladığımız CardView içinde bulunan iç noktaya tıklandığında tıklama eventini MainActivity de yakalayabilmek için bir Interface sınıfı oluşturduk.

IClickListener.java

Adapter sınıfımızda kullanacağımız görsel kısmı oluşturan layout yapısı aşağıdadır

recylerview_item.xml

RecylerView bileşenimizi doldurmak için oluşturduğumuz adapter sınıfımızda aşağıdadır. RecylerView ile ilgili ayrıntılı bir anlatım burada yapmayacağım diğer derslerimde yeteri kadar bu konulara değindim. Tekrardan incelemek isteyenler bu dersimize bakabilirsiniz.

CustomAdapter.java

Görsel kısmında ise , kullanıcı ekleme yapacağı için EditText ler ve eklenen kullanıcıların gösterilebilmesi içinde RecylerView tanımladık.

activity_main.xml

Şimdi MainActivity sınıfımızı inceleyelim;

MainActivity.java

Yukarıdaki kodları ayırarak anlatmaya başlayalım; öncelikle kullanıcı Realm Veritabanına kişi eklemek isterse aşağıdaki kod parçacığı çalışacaktır. realm objesinin executeTransactionAsync methodu ile asekron bir işlem başlatmış oluyoruz. execute methodu içinde neler yapacağımızı yazıyoruz. Realm de veritabanı işlemlerinde auto increment bir yapı yoktur o yüzden kendi auto incerement yapımızı oluşturmak için aşağıdaki gibi bir yapı oluşturduk. Yarattığımız PersonTable modellerinede EditText lerde yer alan değerleri set ettik. Eğer kullanıcı ekleme işlemi başarılı olursa OnSuccess methodu tetiklenecektir. Eğer ekleme işleminde herhangi bir hata varsa da onError methodu tetiklenecektir.

Realm Veritabanı Ekleme İşlemi

Aşağıdaki kod parçasını incelediğimizde ise; yine asekron işlem başlatıyoruz. execute methodunda Realm.getDefaultInstance().where(PersonTable.class).findAll() bu kod ile kayıtlı olan bütün kullanıcıları çekiyoruz ve position değerine göre de istenilen kullanıcının kayıtlı olan değerlerini değiştirebiliyoruz.

Realm Veritabanı Güncelleme İşlemi

Realm Veritabanından kayıt silmek içinde aşağıdaki gibi bir yapı oluşturuyoruz. Listelenen veriler içinden silmek istediğimizin position değerini listeye verdiğimizde bize PersonTable tipinde bir model dönüyor daha sonra da dönen modeli deleteFromRealm methodu ile siliyoruz.

Realm Veritabanı Silme İşlemi

Veritabanında bulunan bütün kayıtları silmek istersek ; yine bütün kayıtları çekiyoruz ve çekilen kayıtlar üzerinden deleteAllFromRealm methodunu tetikliyoruz.
Uygulamamızda kayıtlı olan ve yaşı 27 olan kullanıcıyı bulmak istersek aşağıdaki sorgu yapısını oluşturmalıyız.
Uygulamamızda kayıtlı olan kullanıcıları yaşa göre azalan sırada sıralamak istersek aşağıdaki sorgu yapısını oluşturmalıyız.
Uygulamayı ilk çalıştırdığımızda karşımıza gelen ekran:

Herhangi bir kayıt ekledikten sonra oluşan ekran görüntümüz:

Eklenen herhangi bir kaydı güncellemek istediğimizde :

         

Kaynak kodu indirip, çalıştırmanızı öneririm ayrıca kodları temel olarak anlatmaya çalıştım umarım faydalı olmuştur. Realm Veritabanı kullanımının gördüğünüz gibi bir çok esnekliği ve kolaylığı mevcut. Bu dersimizde veritabanına kayıt ekleme, kayıt silme ve kayıt güncelleme gibi işlemleri gerçekleştirdik.

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

Mobilhanem.com üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.

Bir dahaki dersimizde görüşmek dileğiyle..

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

1 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?