คู่มือสำหรับผู้เริ่มต้นใช้งานห้องสมุดความคงอยู่ของห้อง

ไม่ใช่เรื่องยากสำหรับนักพัฒนา Android ในการแปลงข้อมูลดิบเป็นฐานข้อมูลที่มีโครงสร้างสำหรับที่จัดเก็บข้อมูลภายใน สิ่งนี้ทำได้โดยใช้ภาษาที่น่าเชื่อถือที่สุด - SQL ไลบรารีหลัก SQLite ในตัวอยู่ภายในระบบปฏิบัติการ Android จะจัดการการดำเนินการ CRUD (สร้างอ่านอัปเดตและลบ) ที่จำเป็นสำหรับฐานข้อมูล คลาส Java และอินเทอร์เฟซสำหรับ SQLite มีให้โดย android.database SQLite ดูแลระบบการจัดการฐานข้อมูลที่มีประสิทธิภาพ แต่วิธีธรรมดานี้มีข้อเสียในตัวเอง

  • คุณต้องเขียนโค้ดซ้ำ ๆ ยาว ๆ ซึ่งจะใช้เวลานานและมีแนวโน้มที่จะผิดพลาด
  • เป็นเรื่องยากมากที่จะจัดการคิวรี SQL สำหรับฐานข้อมูลเชิงสัมพันธ์ที่ซับซ้อน

เพื่อเอาชนะปัญหานี้ Google ได้แนะนำ Room Persistence Library ซึ่งทำหน้าที่เป็นเลเยอร์นามธรรมสำหรับ SQLite API ที่มีอยู่ แพ็กเกจพารามิเตอร์วิธีการและตัวแปรที่จำเป็นทั้งหมดจะถูกนำเข้าสู่โปรเจ็กต์ Android โดยใช้คำอธิบายประกอบง่ายๆ

มาดูวิธีการใช้งานกับตัวอย่างกัน

1. เพิ่มการขึ้นต่อกันของ gradle ในไฟล์ build.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 ของคุณ

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();

ใช้เธรด AsyncTask หรือเธรดของผู้ปฏิบัติงานทุกครั้งเพื่อดำเนินการฐานข้อมูล

สำหรับข้อมูลเพิ่มเติมโปรดดู:

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

สัมผัสประสบการณ์การเขียนโค้ดที่ไร้รอยต่อตอนนี้มีห้องสำหรับการปรับปรุง

เผยแพร่ครั้งแรกที่ thinkpalm.com