ActiveDroid ve SugarORM 1.5 Android Studio 2.2 Kullanımı

ActiveDroid, ve SugarORM Android uygulamanızda kullanabileceğiniz ORM destekli bir veritabanı uygulamasıdır. Android Studio'nun yeni sürümlerinde nasıl kurulum yapılır ve kullanılır..
Android Studio 2.2 kullanıyorum ve Gradle projesi olarak uygulama geliştiriyorum. Tüm açıklamaları buna göre yapacağım.

ActiveDroid


ActiveDroid Kurulum nasıl yapılır?



* İlk olarak build.gradle (Module: app)'yi açarak eklemeler yapacağız.
ActiveDroid installation - 1


* dependencies kısmına ekliyoruz.
compile 'com.michaelpardo:ActiveDroid:3.1.0-SNAPSHOT'

ActiveDroid installation - 2

Versiyon değeri değişebilir.. Güncel sürümler için pardom/ActiveDroid github safyasını takip ediniz.

* Bu kodun altına
apply plugin: 'com.android.application'

Aşağıdaki kodu ekliyoruz
repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

ActiveDroid installation - 3


Bu adımlardan sonra Sync Project with Gradle Files butonuna tıklayarak senkronize etmiş oluyoruz. Herhangi bir sorun yoksa devam ediyoruz...
ActiveDroid installation - 4


ActiveDroid Nasıl kullanılır?


* Kütüphaneyi başarıyla projeye ekledikten sonra uygulamaya tam olarak dahil ediyoruz. Önce AndroidManifest.xml dosyasını açıyoruz
Buraya kullanacağımız veritabanı dosya adını, sürümünü ve modelleri ekleyeceğiz. Bununla birlikte uygulama başladığında devreye girmesini ve kapandığında kapanmasını sağlamak için application 'a özellik ekleyeceğiz.
android:name="tr.com.mehmethanoglu.optikokuyucu.MyApp"

ya da bu şekilde ekleyebilirsiniz. Ana dizinde olduğu için sadece .MyApp olarak belirtmeniz yeterli
android:name=".MyApp"

Burada tr.com.mehmethanoglu.optikokuyucu proje paketinin adı MyApp ise açılış-kapanış kontrollerini ekleyeceğimiz sınıf. Başka bir isim de verebilirsiniz. Aynı isimle uygulamanızın ana dizininde bir Java Class oluşturmanız gerekli. (Aşağıdaki ekran görüntüsünde yerlerini görebilirsiniz )
ActiveDroid installation - 5

MyApp içeriği aşağıdaki gibidir. MyApp'i değiştirirseniz kodlardaki class adını da değiştirmeniz gerekli.
package tr.com.mehmethanoglu.optikokuyucu;

import com.ActiveDroid.ActiveDroid;
import com.ActiveDroid.app.Application;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Yeni ayar yapmak gerekirse
        //Configuration dbConfiguration = new Configuration.Builder(this).setDatabaseName("xxx.db").create();
        //ActiveDroid.initialize(dbConfiguration);
        ActiveDroid.initialize(this);
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        ActiveDroid.dispose();
    }

}


Bu işlemdeki ikinci aşama ise kullanacağımız modelleri, veritabanı dosya adını ve sürümünü belirtmek olacak. Tüm bu bilgileri application içine gireceğiz.
<meta-data android:name="AA_DB_NAME" android:value="data.db" />
<meta-data android:name="AA_DB_VERSION" android:value="2" />
<meta-data android:name="AA_MODELS" android:value="tr.com.mehmethanoglu.optikokuyucu.db.Test, tr.com.mehmethanoglu.optikokuyucu.db.Result" />

Burada veritabanı adımız data.db, version ise 2 bu değer veritabanına tablo eklediğinizde, kolon ekleme çıkarma yaptığınızda arttırmanız gerekli.
Eğer veritabanı dosyasının istediğiniz bir dizinde oluşturulmasını arzu ederseniz, aşağıdaki gibi bir tanımlama yapabilirsiniz:
<meta-data android:name="AA_DB_NAME" android:value="/sdcard/Veriler/data.db" />

Bu tanımlamayı yapmazsanız, yani direkt olarak dosya adı yazarsanız veritabanı dosyası
/data/data/<paket-adı>/databases/data.db

olarak oluşturulacaktır. Root yetkiniz varsa sqlite dosyasını çeşitli programlar ile inceleyebilirsiniz.
ActiveDroid installation - 6

Model kavramına gelirsek; Tabloları model olarak ele alıyoruz. ORM mantığı gereğince her tablo bir model ile ilgili veriler barındırıyor. Bu verileri diğer tablolar ile ilişkilendirebiliyoruz..
Deneme amaçlı olarak iki adet model oluşturdum. Bunları, düzenli olması için db adında bir paket altında oluşturdum. Dosya yapısı aşağıdaki gibidir.
ActiveDroid installation - 7

Her iki model de yapı olarak aynı, ihityaçlar doğrultusunda kolonlar eklenebilir çıkartılabilir.. Örnek olması amacıyla Test modeline ait içeriği ekliyorum.
package tr.com.mehmethanoglu.optikokuyucu.db;

import com.ActiveDroid.Model;
import com.ActiveDroid.annotation.Column;
import com.ActiveDroid.annotation.Table;

@Table(name = "tests")
public class Test extends Model {

    @Column(name = "name")
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Modelleri de oluşturduktan sonra uygulamanız artık veritabanı kullanımı için hazır. Sadece kullanacağınız modelleri her activity için import etmeniz gerekecek. Zaten bu işlemi Android Studio kolaylaştırıyor.
ActiveDroid installation - 8


Basit bir Test nesnesi oluşturup veritabanına kaydedelim..
Test test = new Test();
test.setName("Deneme Test");
test.save();


Dikkat edilmesi gereken noktalar şunlar
  • Eğer modelleri AndroidManifest dosyasında belirtmezseniz bu hatayı alırsınız: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.ActiveDroid.TableInfo.getIdName()' on a null object reference
  • application içine android:name ile paket_adı.MyApp tanımlaması yapmazsanız: android.database.sqlite.SQLiteException: no such table: Preferences (code 1): , while compiling: SELECT * FROM Preferences
  • Kolon/tablo eklemesi veya çıkarması yaparsanız AA_DB_VERSION değerini arttırmanız gerekir. Aksi halde üstteki ile aynı hatayı verecektir.


SugarORM


Benzer bir yapıda kurulumu yapılabiliyor. SugarORM ActiveDroid'e göre daha güncel bir proje olduğu için tercih sebebi olabilir.

ActiveDroid Kurulum nasıl yapılır?



* İlk olarak build.gradle (Module: app)'yi açarak eklemeler yapacağız.
SugarORM installation - 1


* dependencies kısmına ekliyoruz.
compile 'com.github.satyan:sugar:1.5'

SugarORM Installation - 1

Versiyon değeri değişebilir.. Güncel sürümler için satyan/sugar github safyasını takip ediniz.

Bu adımlardan sonra Sync Project with Gradle Files butonuna tıklayarak senkronize etmiş oluyoruz. Herhangi bir sorun yoksa devam ediyoruz...
ActiveDroid installation - 4


* proguard-rules.pro yu açıyoruz.
SugarORM Installation - 2

Bu kodu en altına ekliyoruz. Burada dikkat edilmesi gereken nokta .db benim modellerim db paketinin/klasörünün içinde. O paketteki modellerin build esnasında görmezden gelinmemesi için gerekli.
-keep class tr.com.mehmethanoglu.optikokuyucu.db.** { *; }

Ekran görüntüsünde klasör yapsını ve kodun nasıl ekleneceğini görebilirsiniz
SugarORM Installation - 3

Bu işlemi yapmazsanız veritabanınızda tablolar oluşturulmaz ve aşağıdaki hatayı alırsınız.
SQLiteException: no such table: TABLE_NAME (code 1): , while compiling: INSERT INTO TABLE_NAME....

sugarORM Nasıl kullanılır?


* Kütüphaneyi başarıyla projeye ekledikten sonra uygulamaya tam olarak dahil ediyoruz. Önce AndroidManifest.xml dosyasını açıyoruz
Buraya kullanacağımız veritabanı dosya adını, sürümünü ekleyeceğiz. Bununla birlikte uygulama başladığında devreye girmesini ve kapandığında kapanmasını sağlamak için application 'a özellik ekleyeceğiz.
android:name="tr.com.mehmethanoglu.optikokuyucu.MyApp"

ya da bu şekilde ekleyebilirsiniz. Ana dizinde olduğu için sadece .MyApp olarak belirtmeniz yeterli
android:name=".MyApp"

Burada tr.com.mehmethanoglu.optikokuyucu proje paketinin adı MyApp ise açılış-kapanış kontrollerini ekleyeceğimiz sınıf. Başka bir isim de verebilirsiniz. Aynı isimle uygulamanızın ana dizininde bir Java Class oluşturmanız gerekli. (Aşağıdaki ekran görüntüsünde yerlerini görebilirsiniz )
SugarORM Installation - 4

MyApp içeriği aşağıdaki gibidir. MyApp'i değiştirirseniz kodlardaki class adını da değiştirmeniz gerekli.
package tr.com.mehmethanoglu.optikokuyucu;

import com.orm.SugarApp;
import com.orm.SugarContext;

public class MyApp extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();
        SugarContext.init(getApplicationContext());
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        SugarContext.terminate();
    }

}


Bu işlemdeki ikinci aşama ise kullanacağımız modelleri, veritabanı dosya adını ve sürümünü belirtmek olacak. Tüm bu bilgileri application içine gireceğiz.
<meta-data android:name="DATABASE" android:value="dev1.db" />
<meta-data android:name="VERSION" android:value="2" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="tr.com.mehmethanoglu.optikokuyucu.db" />

Burada veritabanı adımız dev1.db, version ise 2 bu değer veritabanına tablo eklediğinizde, kolon ekleme çıkarma yaptığınızda arttırmanız gerekli.
Eğer veritabanı dosyasının istediğiniz bir dizinde oluşturulmasını arzu ederseniz, aşağıdaki gibi bir tanımlama yapabilirsiniz:
<meta-data android:name="DATABASE" android:value="/sdcard/Veriler/data.db" />

Bu tanımlamayı yapmazsanız, yani direkt olarak dosya adı yazarsanız veritabanı dosyası
/data/data/<paket-adı>/databases/dev1.db

olarak oluşturulacaktır. Root yetkiniz varsa sqlite dosyasını çeşitli programlar ile inceleyebilirsiniz.
SugarORM Installation - 4

Model kavramına gelirsek; Tabloları model olarak ele alıyoruz. ORM mantığı gereğince her tablo bir model ile ilgili veriler barındırıyor. Bu verileri diğer tablolar ile ilişkilendirebiliyoruz..
Deneme amaçlı olarak bir adet model oluşturdum. Bunları, düzenli olması için db adında bir paket altında oluşturdum. Dosya yapısı aşağıdaki gibidir.
ActiveDroid installation - 7

Örnek olması amacıyla Test modeline ait içeriği ekliyorum.
package tr.com.mehmethanoglu.optikokuyucu.db;

import com.orm.SugarRecord;
import com.orm.dsl.Unique;

public class Test extends SugarRecord {
    @Unique
    String title;
    Integer form_id;
    Integer school_id;
    Integer groups;
    Integer net;
    String answers;
    String date;

    public Test() {
    }

    public Test( String title, Integer form_id, Integer groups, Integer net, String answers, Integer school_id, String date ) {
        this.title = title;
        this.form_id = form_id;
        this.school_id = 1;
        this.groups = groups;
        this.net = net;
        this.answers = answers;
        this.date = date;
    }
}

Modelleri de oluşturduktan sonra uygulamanız artık veritabanı kullanımı için hazır. Sadece kullanacağınız modelleri her activity için import etmeniz gerekecek. Zaten bu işlemi Android Studio kolaylaştırıyor.
ActiveDroid installation - 8


Basit bir Test nesnesi oluşturup veritabanına kaydedelim..
Test test = new Test( "Deneme Test", 1, 4, 3, "", 1, "12-10-2016" );
test.save();


SugarORM no such table hatası 1.5'ten önceki sürümlerden Android Studio'nun Instant Run özelliği açıksa oluşuyordu. SugarORM 1.5 sürümü ile bunun çözüldüğü bildiriliyor. Eğer hata alırsanız, bu özelliği kapatmak için üst menüden File >> Settings ( Ctrl+Alt+S ) daha sonra aşağıdaki ekran görüntüsündeki gibi tik i kaldırıp OK butonuna tıklamanız yeterli olacaktır.
Android Studio Instant Run


Her iki paketin de kurulumu bu şekilde. Alternatif olarak kullanabileceğiniz paketler mevcut. Bazıları: greenDAO, ORMLite, ORMDroid
Bunların içinde basit, boyut olarak düşük olan birkaç tanesi öne çıkıyor. Güncellik ön plana çıktığında SugarORM iyi bir tercih olacaktır.

Buradan güzel bir karşılaştırma yazısına ulaşabilirsiniz.
+10
Yorum ekle

Yorum ekle

    • winksmile
      laughing
      angry
Okunamayan kodu yenilemek için resmin üstüne tıklayınız