[android] 안드로이드 Room Database의 데이터베이스 확장 방법

안드로이드 앱을 개발할 때 데이터베이스는 매우 중요한 부분입니다. 안드로이드 Room은 SQLite 데이터베이스에 대한 추상화 레이어를 제공하여 데이터베이스와의 상호작용을 단순화할 수 있습니다. 때로는 앱의 요구사항이 변경되거나 새로운 기능이 추가될 때 데이터베이스를 확장해야 할 때가 있습니다. 이때 Room 데이터베이스를 어떻게 확장할 수 있는지 알아보겠습니다.

기존 엔티티에 새로운 필드 추가

기존 엔티티에 새로운 필드를 추가할 때는 몇 가지 단계를 수행해야 합니다. 먼저 엔티티 클래스에 새로운 필드를 추가합니다. 그런 다음 데이터베이스 버전을 업데이트하고 마이그레이션을 수행해야 합니다.

다음은 예제 코드입니다.

@Entity(tableName = "users")
public class User {
    @PrimaryKey
    public int id;
    public String name;
    public int age;
    // 새로운 필드 추가
    public String email;
}

데이터베이스 버전 업데이트

기존의 데이터베이스 버전을 업데이트하고 새로운 필드를 추가한 상태에서는 데이터베이스의 버전 번호를 증가시켜야 합니다. 이는 데이터베이스의 버전 관리를 위해 필요한 과정입니다. 데이터베이스 버전을 업데이트하는 방법은 아래와 같습니다.

@Database(entities = {User.class}, version = 2)
public abstract class AppDatabase extends RoomDatabase {
    // 데이터베이스와 연결된 코드
}

마이그레이션

마이그레이션은 데이터베이스의 구조를 변경할 때 기존 데이터를 보전하면서 새로운 구조로 전환하는 과정입니다. Room 데이터베이스는 마이그레이션을 위한 Migration 클래스를 제공합니다. 새로운 데이터베이스 버전에서 이전 버전으로부터 마이그레이션을 수행할 수 있도록 마이그레이션 코드를 작성해야 합니다.

static final Migration MIGRATION_1_2 = new Migration(1, 2) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        // 이전 버전에서 새로운 버전으로의 마이그레이션 수행
    }
};

이제 엔티티에 새로운 필드를 추가하고 데이터베이스를 확장하는 방법에 대해 알아보았습니다.

더 자세한 내용은 Android Room Persistence 라이브러리 문서를 참고하세요.