Android ORM greenDAO

2015. 10. 28. 22:42Mobile/Android



반응형



Android ORM greenDAO  


기존 SQLiteOpenHelper 를 쓰다가 퍼포먼스 문제로 여러가지 ORM 을 적용해보는 중... 


괜찮은것을 발견해서 적용해봄


일단 예제 소스와  documentation이 아래 공식 싸이트에 잘 나와있습니다.


http://greendao-orm.com/ 

https://github.com/greenrobot/greenDAO 

greenDAO 같은경우 여러가지 라이브러리가 있는데 아래와 같은 문구가 맘에들었음 (APK 파일크기에 크게 지장이없다)

greenDAOs core library is less than 100k in size, so adding greenDAO does not hurt your APK size.

또한 아래와 같이 객체가 자동으로 만들어짐 오우!!!!






비교 사진 대단한데 !!?






일단 해당 프로젝트에서 New -> New Module  클릭 


Java Library 를 클릭해주세요~





Library name , Java package name , Java class name 을 입력 후 피니쉬~





프로젝트안에 dao 라는 폴더가 생김





Main.java  - 주석을 한글을 넣으면(인코딩이) 먼가 AAR 꼬이는거 같음 

package com.example;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;

public class Main {
public static void main(String[] args) throws Exception {
Schema schema = new Schema(1, "com.example.dao");// 객체가만들어질 위치

Entity person = schema.addEntity("Person"); // Person 테이블추가
person.addIdProperty(); // ID에대한 PK
person.addStringProperty("name"); //name에대한 String 필드
person.addStringProperty("comment");//Comment 에대한 String 필드

Entity lease = schema.addEntity("Lease");
lease.addIdProperty();
lease.addStringProperty("item");
lease.addStringProperty("comment");
lease.addLongProperty("leasedate");
lease.addLongProperty("returndate");

/**
* In your greenDAO generator model you must model a property for the foreign key (ID) value. Using t           his property, you can add a to-one relation using Entity.addToOne.
*/

Property personId = lease.addLongProperty("personId").getProperty();
lease.addToOne(person, personId);

//foreign key (To-Many Relations)
ToMany personToLease = person.addToMany(lease, personId);
personToLease.setName("leases");

new DaoGenerator().generateAll(schema, "../app/src/main/java");
}
}











build.gradle

apply plugin: 'application'
apply plugin: 'java'
mainClassName = "com.example.Main"
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'de.greenrobot:greendao-generator:2.0.0'
}



Gradle projects 를 열어 :dao -> application -> run 을 실행 시켜줍니다.




빌드 석세스가 뜨면 성공 ~


app/src/main/java -> com.example.dao



기존 - app


build.gradle 

dependencies {
compile 'de.greenrobot:greendao:2.0.0'
}



자 이제  테스트를 !!!

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper( IntroActivity.this, "ggari.db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
personDao = daoSession.getPersonDao();

Person person = new Person(null,"kim","ggari");
personDao.insert(person);

cursor = db.query(personDao.getTablename(), personDao.getAllColumns(), null, null, null, null, null);
DaoLog.d(DatabaseUtils.dumpCursorToString(cursor));

for (int i = 0; i <personDao.loadAll().size() ; i++) {
DaoLog.d(personDao.loadAll().get(i).getName());
}

아주 많은 기능들이 있다 documentation 을 보고 응용 해보자






끝~

반응형

'Mobile > Android' 카테고리의 다른 글

android studio google map v2 (2)  (1) 2015.10.29
android studio google map v2 (1)  (0) 2015.10.29
android facebook 연동  (0) 2015.10.22
안드로이드 멀티 클릭 막기  (2) 2015.10.16
안드로이드 스튜디오 AAR 만들기  (0) 2015.10.09