일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가상컴퓨터
- jenkins war
- 아파치
- vim
- Firebase
- vimrc
- 가상머신
- 아파치 https 적용
- 버추얼박스
- vi
- php
- 리눅스
- jenkins 업데이트
- 우분투 젠킨스 업데이트
- 인증번호 문자
- 우분투
- virtualbox
- ubuntu
- 웹서버
- 우분투 젠킨스
- 전화번호 가져오기
- CODEIGNITER
- 안드로이드
- Android
- SMS Retreiver API
- jenkins
- 젠킨스
- 우분투 아파치 ssl
- Phone Selector
- phpMyAdmin
- Today
- Total
철스토리
SugarORM - 안드로이드 DB접근을 쉽게 본문
* 참고 사이트
http://satyan.github.io/sugar/
----------------------------------------------------------------------------------------------------------------------
# Sugar ORM(Object Relation Mapping)이란?
ORM에 대해 간략하게 소개하자면 Object Relation Mapping으로 객체와 릴레이션(RDB의 테이블)간에 매핑을 해 주는 역할을 한다. 쉽게 말하면 Book이라는 객체가 있다면 이 객체를 ORM을 통해 RDB에 삽입(Insert)하거나, 검색(Select)하거나, 삭제(Delete)하거나, 수정(Update)도 할 수 있다. 그리고 기본적인 CRUD 외에도 스키마를 다루거나 조인 연산 등 RDB의 기능을 객체지향적으로 다룰 수 있도록 도와준다.
결과적으로 안드로이드에서 쉽게 Sqlite Database에 접근하도록 도와주는 라이브러리이다.
# Sugar ORM 사용방법
1. gradle에 추가 [ build.gradle (Module: app) ]
compile 'com.github.satyan:sugar:1.5'
2. Manifest에 추가 [아래 밑줄부분 추가]
- application name을 꼭 추가해 주어야 한다.
- meta-data부분에서 DATABASE부분이 DB이름이 된다.
- 혹시 no such table 에러가 발생하면 VERSION의 value를 기존보다 높게 하면 해결 될 수 있다.
- PACKAGE_NAME에는 자신의 패키지 명을 적으면 된다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kkensu.www.sugarormtest">
<application
android:name="com.orm.SugarApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data android:name="DATABASE" android:value="sugar_example.db" />
<meta-data android:name="VERSION" android:value="1" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.kkensu.www.sugarormtest" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3. SugarRecord를 상속받은 클래스 생성
package com.kkensu.www.sugarormtest;
import com.orm.SugarRecord;
public class Book extends SugarRecord {
String title;
String edition;
public Book() {
}
public Book(String title, String edition) {
this.title = title;
this.edition = edition;
}
}
4. 실제로 사용
package com.kkensu.www.sugarormtest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i=0; i<100; i++) {
Book book = new Book("Title here " + i, i +" edition");
book.save();
}
Book book2 = Book.findById(Book.class, 15);
Log.e("JHC_DEBUG", "TITLE : " + book2.title);
Book book3 = Book.findById(Book.class, 15);
book3.title = "updated title here"; // modify the values
book3.edition = "3rd edition";
book3.save(); // updates the previous entry with new values.
book2 = Book.findById(Book.class, 15);
Log.e("JHC_DEBUG", "TITLE : " + book2.title);
Book book5 = Book.findById(Book.class, 15);
book5.delete();
book2 = Book.findById(Book.class, 15); // 삭제 되었기 때문에 에러로 앱이 주는 현상 발생
Log.e("JHC_DEBUG", "TITLE : " + book2.title);
}
}
# 오류 해결 하는 방법 (no such table)
1. SugarRecord상속받은 클래스에 기본생성자 (public class) 생성
2. Manifest에서 VERSION 값을 수정 (값을 증가)
3. 앱을 지웠다가 다시 설치
4. Android Studio의 설정 중 Instant Run 기능 해제
'안드로이드 > 유용한 라이브러리' 카테고리의 다른 글
StickyScrollView - Scrollview 중 일부 타이틀 고정 (0) | 2016.10.05 |
---|---|
TedPermission - 안드로이드 6.0 마시멜로우 권한설정 라이브러리 (0) | 2016.10.01 |
Retrofit2 - 서버와 데이터를 주고받는 라이브러리 (작성중) (0) | 2016.09.17 |
Glide - 이미지뷰 관련 라이브러리 (0) | 2016.08.24 |
ScalableLayout - 비율에 맞춰서 화면 조절 (1) | 2016.07.11 |