[android] 안드로이드 Room Database의 구성 요소

안드로이드 앱을 개발할 때 데이터베이스는 매우 중요한 부분입니다. Room은 안드로이드 앱에서 SQLite 데이터베이스와 함께 작업하기 위한 라이브러리이며, 데이터베이스, DAO(Data Access Object) 및 엔티티(Entity)라는 세 가지 주요 구성 요소로 구성됩니다. 이 구성 요소들은 안드로이드 앱에서 데이터를 유지하고 관리하는 데 중요한 역할을 합니다.

1. 데이터베이스(Database)

Room의 가장 상위 수준 구성 요소인 데이터베이스는 일반적으로 앱의 전체 수명 주기 동안 유지되는 데이터 저장 공간으로, 데이터베이스와의 연결을 나타냅니다. 데이터베이스는 보통 데이터베이스 홀더(Database Holder) 클래스에 의해 나타내어지며, 보통 추상 클래스여야 합니다. 데이터베이스는 주로 앱의 데이터베이스 인스턴스를 반환하는 메서드를 제공하며, 이를 통해 앱에서 데이터베이스에 액세스할 수 있습니다.

@Database(entities = {User.class}, version = 1)
public abstract class MyAppDatabase extends RoomDatabase {
    public abstract MyDao myDao();
}

위의 코드는 데이터베이스를 정의하는 방법을 보여줍니다.

2. DAO (Data Access Object)

DAO는 데이터베이스와 상호 작용하기 위한 메서드를 정의하는 인터페이스입니다. 앱은 DAO를 사용하여 데이터베이스에서 필요한 작업(예: 데이터 삽입, 조회, 업데이트 및 삭제)을 수행할 수 있습니다.

@Dao
public interface MyDao {
    @Query("SELECT * FROM users")
    List<User> getAllUsers();

    @Insert
    void insertUser(User user);

    @Update
    void updateUser(User user);

    @Delete
    void deleteUser(User user);
}

위의 코드는 DAO를 정의하는 방법을 보여줍니다.

3. 엔티티(Entity)

엔티티는 데이터베이스의 테이블을 나타내는 클래스입니다. 각 엔티티는 데이터베이스에 테이블을 만들고 나타내는 데 사용됩니다.

@Entity
public class User {
    @PrimaryKey
    public int id;

    @ColumnInfo(name = "user_name")
    public String userName;

    @ColumnInfo(name = "age")
    public int age;
}

위의 코드는 엔티티를 정의하는 방법을 보여줍니다.

이러한 Room 데이터베이스의 구성 요소들은 안드로이드 앱에서 데이터를 효율적으로 관리하고 유지할 수 있도록 도와줍니다. Room은 데이터베이스 구현을 쉽게 만들고 유지보수하는 데 도움을 주는 강력한 도구입니다.

참고 문헌: