Room Persistence Library에 대한 초보자 가이드

Android 개발자가 원시 데이터를 내부 저장을 위해 구조화 된 데이터베이스로 변환하는 것은 어려운 작업이 아닙니다. 이것은 가장 신뢰할 수있는 언어 인 SQL을 사용하여 수행됩니다. 내장 된 SQLite 코어 라이브러리는 Android OS 내에 있습니다. 데이터베이스에 필요한 CRUD (생성, 읽기, 업데이트 및 삭제) 작업을 처리합니다. SQLite 용 Java 클래스 및 인터페이스는 android.database에서 제공합니다. SQLite는 효과적인 데이터베이스 관리 시스템을 유지합니다. 그러나이 기존의 방법에는 자체 단점이 있습니다.

  • 길고 반복적 인 코드를 작성해야하므로 시간이 많이 걸리고 실수를하기 쉽습니다.
  • 복잡한 관계형 데이터베이스에 대한 SQL 쿼리를 관리하는 것은 매우 어렵습니다.

이를 극복하기 위해 Google은 Room Persistence Library를 도입했습니다. 이것은 기존 SQLite API에 대한 추상화 계층 역할을합니다. 모든 필수 패키지, 매개 변수, 메소드 및 변수는 간단한 주석을 사용하여 Android 프로젝트로 가져옵니다.

예제를 통해이를 구현하는 방법을 살펴 보겠습니다.

1. build.gradle 파일에 gradle 종속성을 추가합니다.

implementation “android.arch.persistence.room:runtime:1.0.0”annotationProcessor “android.arch.persistence.room:compiler:1.0.0”

2. 데이터베이스 테이블에 대한 데이터 모델 클래스를 만들고 테이블 이름과 기본 키에 주석을 답니다.

@Entity public class Movies { @NonNull @PrimaryKey private String movieId; private String movieName; public Movies() { } public String getMovieId() { return movieId; } public void setMovieId(String movieId) { this.movieId = movieId; } public String getMovieName() { return movieName; } public void setMovieName (String movieName) { this.movieName = movieName; } }

3. 데이터베이스 액세스를위한 인터페이스 클래스를 만듭니다. CRUD 작업을위한 추상 메서드를 만듭니다. 사용자 지정 SQL 쿼리를 메서드로 추가합니다.

@Dao public interface DaoAccess { @Insert void insertOnlySingleMovie (Movies movies); @Insert void insertMultipleMovies (List moviesList); @Query (“SELECT * FROM Movies WHERE movieId = :movieId“) Movies fetchOneMoviesbyMovieId (int movieId); @Update void updateMovie (Movies movies); @Delete void deleteMovie (Movies movies); }

4. 데이터베이스 구현을위한 데이터베이스 클래스를 만듭니다.

@Database (entities = {Movies.class}, version = 1, exportSchema = false) public abstract class MovieDatabase extends RoomDatabase { public abstract DaoAccess daoAccess() ; }

5. Activity 또는 Fragment 클래스의 Database 클래스에 대한 개체를 선언하고 초기화합니다.

private static final String DATABASE_NAME = “movies_db”; private MovieDatabase movieDatabase; movieDatabase = Room.databaseBuilder(getApplicationContext(), MovieDatabase.class, DATABASE_NAME) .fallbackToDesctructiveMigration() .build();

초기 단계가 완료되었습니다. 데이터베이스 개체를 사용하여 데이터베이스 관리를위한 모든 기능을 수행 할 수 있습니다.

샘플 삽입 코드 :

new Thread(new Runnable() { @Override public void run() { Movies movie =new Movies(); movie.setMovieId( “2”); movie.setMovieName(“The Prestige”); movieDatabase.daoAccess () . insertOnlySingleMovie (movie); } }) .start();

항상 Thread, AsyncTask 또는 모든 작업자 스레드를 사용하여 데이터베이스 작업을 수행합니다.

자세한 내용은 다음을 확인하십시오.

//developer.android.com/training/data-storage/room/index.html

개선의 여지가 있으므로 이제 원활한 코딩을 경험하십시오!

원래 thinkpalm.com에 게시되었습니다.