yapp a.a 2 2 sugar orm

18
YAPP Advanced Android Study . Sugar ORM 2013. 7. 25 이준영 13726금요일

Upload: -

Post on 23-Jun-2015

635 views

Category:

Technology


1 download

DESCRIPTION

YAPP Advanced Android 스터디 2주차 두번째 자료입니다. ORM 개념 및 Sugar ORM

TRANSCRIPT

Page 1: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

Sugar ORM2013. 7. 25이준영

13년 7월 26일 금요일

Page 2: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

ORM 이란? (1)

이미지 출처 : 4 Benefits of Object-Relational Mapping (ORM)

Object-Relational Mapping

객체 지향의 객체(Object) 와RDB의 데이터를 매핑

13년 7월 26일 금요일

Page 3: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

ORM 이란? (2)쉽게 얘기하면, SQL을 사용하지 않고도

DB의 데이터를 쉽게 객체로 만들어 주는 것WishItem item = new WishItem(itemName, createdTime);int rowId; ContentValues values = new ContentValues();values.put(WishItemsDbColumns.ITEM_NAME, itemName);values.put(WishItemsDbColumns.CREATED_TIME, createdTime);rowId = db.insert(WishItemsDbColumns.TABLE_NAME, null, values);item.setId(rowId)

WishItem item = new WishItem(itemName, createdTime);item.save();

13년 7월 26일 금요일

Page 4: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

Open Source AndroidORM Libraries

• ActiveAndroid(https://www.activeandroid.com/)

• SqliteORM(https://github.com/kremerk/SqliteORM/wiki)

• ORMLite(http://ormlite.com)

• Storm(https://code.google.com/p/storm-gen/)

• Green Dao(http://greendao-orm.com)

• Sugar ORM(https://github.com/satyan/sugar)

13년 7월 26일 금요일

Page 5: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

오픈 소스... 마냥 좋은걸까?

13년 7월 26일 금요일

Page 6: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

시작해 봅시다.

• 다른 ORM Library에 비해 비교적사용 방법이 단순

• Sugar ORM Libarary 다운로드https://github.com/satyan/sugar

13년 7월 26일 금요일

Page 7: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

1.

3.

2.

13년 7월 26일 금요일

Page 8: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

Sugar ORM 설정 요약

1. 안드로이드 프로젝트 libs 폴더에 라이브러리를 추가한다.

2. 매니페스트에 Application 클래스를 설정한다

3. 매니페스트에 meta-data 태그를 이용하여 4개의 프로퍼티를 추가한다.

4. 쓴다.

13년 7월 26일 금요일

Page 9: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

1. 안드로이드 프로젝트 libs 폴더에 라이브러리를 추가한다.

13년 7월 26일 금요일

Page 10: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

2. 매니페스트에 Application 클래스를 설정한다<application

android:name="com.orm.SugarApp" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="yapp.aa.android.MainActivity_" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity></application>

13년 7월 26일 금요일

Page 11: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

3. 매니페스트에 meta-data 태그를 이용하여 4개의 프로퍼티를 추가한다.

<application ...// application 내용 생략..

<!-- 메타 데이터 추가 --> <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="yapp.aa.android"/> <!-- 프로젝트의 기본 패키지로 설정--></application>

13년 7월 26일 금요일

Page 12: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

만만한 wishitem 테이블

wishitem tablewishitem table

열 이름 타입

name String

created_time String

13년 7월 26일 금요일

Page 13: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

WishItem Class

• 테이블 (릴레이션)과 매핑할 클래스 작성

• com.org.SugarRecord를 상속해야 함

• Context 를 매개변수로 하는 생성자 작성

13년 7월 26일 금요일

Page 14: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

com.orm.SugarRecord 상속

Constructors from superclass 체크

13년 7월 26일 금요일

Page 15: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

public class WishItem extends SugarRecord { private String name; private String createdTime;

public WishItem(Context context) { super(context); }

public WishItem(Context context, String name, String createdTime) { super(context); this.name = name; this.createdTime = createdTime; }

public String getName() { return name; }

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

public String getCreatedTime() { return createdTime; }

public void setCreatedTime(String createdTime) { this.createdTime = createdTime; }}

name, createdTime 필드 추가생성자, 게터/세터 추가

13년 7월 26일 금요일

Page 16: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

SugarRecordmethods

• save()DB에 없는 경우 insert,DB에 있는 경우 update

• delete()row 삭제

• get/set Id()row ID get/set

13년 7월 26일 금요일

Page 17: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

SugarRecordstatic methods

13년 7월 26일 금요일

Page 18: Yapp a.a 2 2 sugar orm

YAPP Advanced Android Study .

http://satyan.github.io/sugar/ 영어지만 쉽게 되어있음

13년 7월 26일 금요일