반응형
Room Database는 내장된 SQLite 기능을 활용하여
데이터베이스를 사용할 수 있습니다.
(※SQLite - 안드로이드 운영체제에 기본으로 탑재되어있는 데이터베이스, 비교적 가벼움)
Room의 주요 3가지 구성요소
· Database(데이터베이스) - 데이터베이스의 holder를 구성하며 관계형 데이터에 대한 연결을 해준다.
조건 - 1. RoomDatabase를 extends 하는 abstract class입니다.
2. annotation 내에 entities(Table의 구조와 mapping되는 class)를 포함해야 한다.
3. 클래스 내부에 DAO(Data Access Objects)를 정의한다.
· Entity(엔티티) - 데이터베이스 내의 테이블을 나타낸다.
· DAO(Data Access Objects) - 데이터베이스에 접근하는 데 사용되는 함수를 정의
Entity 예시
@Entity(tableName="user")
public class User {
@PrimaryKey
@NonNull
private String uid;
@ColumnInfo(name="first_name")
private String firstName;
@ColumnInfo(name="last_name")
private String lastName;
//생성자, getter와 setter은 필수적인 요소입니다.
//getter와 setter은 없을시
public User(String firstName, String lastName) {
this.uid= UUID.randomUUID().toString();
this.firstName = firstName;
this.lastName = lastName;
}
@NonNull
public String getUid() {
return uid;
}
public void setUid(@NonNull String uid) {
this.uid = uid;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
|
cs |
Dao 예시
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND "
+ "last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertAll(User... users);
@Delete
void delete(User user);
}
|
cs |
Database 예시
@Database(entities={User.class}, version=1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
//Room Database는 싱글톤 패턴을 해야한다.
private static AppDatabase INSTANCE;
private static final Object sLock = new Object();
public static AppDatabase getInstance(Context context) {
synchronized (sLock) {
if(INSTANCE==null) {
INSTANCE=Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "Users.db")
.build();
}
return INSTANCE;
}
}
}
|
cs |
다음시간에는 실제 Room Database 사용 예시를 만들어보면서 원리를 공부해봅시다.
사용하게 될 open source는 아래와 같습니다.
영어로 되어있지만 단계별로 잘 설명이 되어있습니다.
반응형
'프로그래밍 > Android' 카테고리의 다른 글
(Android) ActivityContext? ApplicationContext? (0) | 2018.12.21 |
---|---|
(Android) Room Persistence Library 실습 -1 (0) | 2018.12.21 |
(Android) PullRefresh - 뷰의 끌어당기는 로딩 (0) | 2018.12.21 |
(Android) ViewAnimation - UI 애니메이션 효과 적용하기 (0) | 2018.12.21 |
(Android) SwipeLayout - 옆으로 넘기는 레이아웃 (0) | 2018.12.21 |