안드로이드 SqlLite Database ORM 프레임웤 greenDAO
프로그래밍/Android 2013. 9. 10. 21:51안드로이드 Sqlite Database ORM 프레임웤 greenDAO
역시나 안드로이드에서 DB 접근에 귀차니즘을 느끼고 iBatis 같은 프레임웍을 찾아보니
당연히 있더군요... 역시 세상은 제 생각보다 빠름을 절실히 느꼈습니다.
안드로이드에서는 해당 장치내에 있는 Sqlite DB 를 접근하기 위해 SQLiteOpenHelper 와 같은 유능한 클래스를 제공하고 있지만
예전부터 iBatis 와 스프링에 젖어 있던 저에게는 예전 ASP 를 처음 배울때의 향수를 불러 일으키더군요...
( 엄청난 스트링 조합 쿼리의 향연... 눈빠지죠 , 하나만 빠져도)
그래서 조금 더 편하게 개발을 하고자 greenDAO 를 현재 개발중인 프로젝트에 적용해 봤습니다.
※ 관련 및 자세한 정보는 다음 URL 에서... http://greendao-orm.com/
우선 크게 greenDAO 두가지 기능을 제공합니다.
- 첫째, DB 에 쉽게 접근할 수 있도록 하는 Helper 클래스
- 둘째, generator 를 통해서 Model, DAO 객체 및 관련 객체를 생성하는 기능
iBatis 만 사용하던 저에게는 프레임웍에서 Model, DAO 객체를 자동으로 생성해 준다는것에 놀람을 금치 못했습니다.
우선 Model 과 DAO 를 자동생성하기 위해서는 자바코딩이 필요합니다.
우선, greenDAO 를 적용하기 위해서는 아래 3개의 library 가 필요합니다. 위 사이트에서 다운로드 받으시면 됩니다.
[객체를 생성하기 위한 자바 코드]
public static void main() throws Exception{
Schema schema = new Schema(3, "kr.co.zadu.h3lotto.model"); // MODEL 객체가 생성될 패키지를 지정합니다.
schema.setDefaultJavaPackageTest("kr.co.zadu.h3lotto.test");
schema.setDefaultJavaPackageDao("kr.co.zadu.h3lotto.dao"); // DAO 객체가 생성될 패키지를 지정합니다.
addLottery(schema);
addFavoriteLottery(schema);
new DaoGenerator().generateAll(schema, "../[프로젝트명]/src-gen"); // 객체를 생성하며 생성될 위치(src 폴더 위치)를 지정합니다.
}
private void addLottery( Schema schema){
Entity lottery = schema.addEntity("Lottery"); // Lottery 테이블을 추가합니다.
lottery.addIdProperty(); // ID 라는 primary key 를 갖고
lottery.addIntProperty("set"); // set 이라는 int 형 필드를 갖습니다.
Property number = lottery.addIntProperty("number").getProperty(); // number 라는 int 형 필드를 갖습니다.
// number 에 인덱스를 추가해 줍니다.
Index numberIndex = new Index();
numberIndex.addProperty( number);
lottery.addIndex(numberIndex);
}
private void addFavoriteLottery( Schema schema){
Entity lottery = schema.addEntity("FavoriteLottery");
lottery.addIdProperty();
lottery.addIntProperty("number1");
lottery.addIntProperty("number2");
lottery.addIntProperty("number3");
lottery.addIntProperty("number4");
lottery.addIntProperty("number5");
lottery.addIntProperty("number6");
lottery.addDateProperty("addDate"); // 추가된 날짜
}
위 코드를 돌려주면 놀랍게도 아래와 같이 객체가 자동으로 생성됩니다.
그럼 생성까지는 자동으로 됬는데 사용하는 방법은 어떻게...
놀랍게도 greenDAO는 DB 생성시 사용하는 테이블을 몽땅 다 자동으로 생성해 줍니다. 사용자는 CREATE TABLE... 구문은 신경쓰지 않아도 됩니다.
[Dao 객체 얻어오기]
// DB에 최초로 접근을 할때 해당 DB, lottery.db 가 존재하지 않으면 lottery.db 를 생성함과 동시에 관련 테이블을 생성합니다.
DevOpenHelper helper = new DaoMaster.DevOpenHelper( Method1Activity.this, "lottery.db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
lotteryDao = daoSession.getLotteryDao();
favoriteLotteryDao = daoSession.getFavoriteLotteryDao();
위의 자바 코드를 통해서 DAO 객체를 얻어올 수 있습니다.
DAO 객체에는 CRUD 관련 메소드가 존재합니다. 사용방법은 기존에 DAO 를 사용해 보셨던 분이라면 쉽게 사용할 수 있습니다.
간단하게 DB insert 하는 구문만 살펴보면
[DB insert 구문]
Lottery lottery = new Lottery();
...
//lottery 객체 설정 완료후
lotteryDao.insert( lottery); // DB insert
[SQL 로그 찍는법]
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
간단합니다.
그외 고급 사용법은 홈페이지를 방문하여 습득하시길 바랍니다.
'프로그래밍 > Android' 카테고리의 다른 글
greenDAO 두 Entity 간에 관계 설정하기 (0) | 2013.09.24 |
---|---|
greenDAO insert 성능 향상시키는법 (0) | 2013.09.13 |
안드로이드 로그 프레임웤 logback (0) | 2013.09.10 |
Spring For Android, Rest Client 를 사용한 서버와의 통신 (0) | 2013.09.04 |
안드로이드 Loader 활용하기 (0) | 2013.09.02 |