sugar orm 이란?
ORM에 대해 간략하게 소개하자면 Object Relational Mapping으로 객체와 릴레이션(RDB의 테이블)간에 매핑을 해 주는 역할을 합니다. 쉽게 말하자면 Book 이라는 객체가 있다면 이 객체를 ORM을 통해 RDB에 넣거나(Insert), 가져오거나(Select), 지우거나(Delete), 고칠 수(Update)도 있고, 기본적인 CRUD 외에도 스키마를 다루거나 조인 연산등 RDB의 기능을 객체지향적으로 다룰 수 있도록 도와줍니다.
-Object Relational Mapping의약자
-객체를통해서DB를다루는것이목적
■SugarORM
-안드로이드에서ORM을사용하기위해만들어진라이브러리
-SQLite DataBase와의상호작용을더손쉽게만들어줌
sugar orm 사용법
1. gradle을 추가한다.
Gradle:
compile 'com.github.satyan:sugar:1.4'
2. Manifest에 추가한다.
AndroidManifest.xml
<application android:label="@string/app_name" android:icon="@drawable/icon"
android:name="com.orm.SugarApp">
.
.
<meta-data android:name="DATABASE" android:value="sugar_example.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="com.example" />
.
.
</application>
*
오류가 발생해서 한동안 애먹었다.
android:name="com.orm.SugarApp" 을 빼먹지말자!
sugar_example.db : 파일로 저장될 db파일의 이름이다. 하고싶은 이름으로 수정해도 된다.
android:value="2" : 혹시 오류가 나면 높은 값(예를들어 20) 으로 바꾸면 될 수 도 있음...
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />
com.example 에 본인의 app이름을 넣을 것!
3. SugarRecord를 상속받은 클래스를 생성한다.
public class Book extends SugarRecord {
String title;
String edition;
public Book(){
}
public Book(String title, String edition){
this.title = title;
this.edition = edition;
}
}
* 기본 생성자를 생성하지 않으면 오류가 발생한다고 한다.
제공하는 메서드
- save : db에 저장한다.
- delete : 삭제
- findById : 레코드 검색
-사용 예
Save Entity:
Book book = new Book("Title here", "2nd edition")
book.save();
Load Entity:
Book book = Book.findById(Book.class, 1);
Update Entity:
Book book = Book.findById(Book.class, 1);
book.title = "updated title here"; // modify the values
book.edition = "3rd edition";
book.save(); // updates the previous entry with new values.
Delete Entity:
Book book = Book.findById(Book.class, 1);
book.delete();
Bulk Operations:
List<Book> books = Book.listAll(Book.class);
Book.deleteAll(Book.class);
오류...
no such table 오류
=> 1. public 기본생성자를 만들것
2. Manifest에서 VERSION 값을 수정해볼것
3. 앱을 지웠다가 다시 해볼것
만들어진 디비 확인하기
SQLite를 이용하여 DB 를 생성하게되면 보통 " data/data/패키지명/databases/저장한DB이름.db " 경로로 파일이 저장된다.
하지만 data 폴더는 퍼미션이 제한되어있어 일반 비루팅 디바이스로는 접근할수 없다.
그래서 루팅이 되지 않은 디바이스에선 DB를 이용한 App 테스트 중엔 직접적인 db 데이터를 확인 할 수 있는 방법이 없다.
퍼미션으로 인해 data 폴더 접근이 불가능하므로 , 접근 가능한 폴더로 db 저장 경로를 변경해주면 된다.
Ex)
mDBHelper = new DatabaseHelper(mContext,"/mnt/sdcard/" + DB_NAME, null, DATABASE_VERSION); |
/mnt/sdcard/ 처럼 퍼미션이 있는 폴더 경로를 추가해주면 해당 경로의 폴더안에 DB가 생성된다.
그러면 직접 접근하여, 파일 데이터 확인이 가능하다 !!
또다른방법들...
방법1
sdcard가 mount된 avd 작동시키시고
Eclipse -> DDMS -> File Exploer
방법2
sdcard가 mount된 avd 작동시키시고
adb shell
#cd data
#cd data
#cd com.bopduk.BopMusic
#cd database
#ls -l
BOPMUSIC_DB.db
이렇게 자신의 패키지 경로명 주면 됨
방법3
소스코드로 확인할려면
String DB_NAME = "BOPMUSIC_DB";
String dbPath=getApplicationContext().getDatabasePath(DB_NAME).getPath();
Log.i("my db path=", ""+dbPath);
File f=new File(dbPath);
if(f.canRead())
Log.i("DB", "DB를 읽을수 있다");
테이블 확인
SQLite Database Browser2.0설치하시고
eclipse로 db파일 바탕화면으로 복사하고 위 프로그램으로 보시면됨.
'Android' 카테고리의 다른 글
[안드로이드]안드로이드 스튜디오에서 단위테스트 하기! (0) | 2016.01.05 |
---|---|
[안드로이드]쓰레드와 핸들러 (1) | 2016.01.02 |
[안드로이드]ViewHolder 사용하기 (0) | 2015.12.28 |
[안드로이드]Adapter사용하기 (0) | 2015.12.28 |
[안드로이드]Gson사용하기 (0) | 2015.12.28 |