เอนทิตีและ DAO
กำหนดตารางและออบเจ็กต์การเข้าถึงข้อมูล
เอนทิตีและ DAO เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
Room คืออะไร
Room เป็นไลบรารีสำหรับการเก็บข้อมูลถาวรที่จัดเตรียมชั้นนามธรรมเหนือ SQLite ช่วยให้คุณทำงานกับแถวในฐานข้อมูลในรูปออบเจกต์ Kotlin พร้อมตรวจสอบคำสั่งสืบค้นขณะคอมไพล์
องค์ประกอบหลักสามอย่างของ Room
- Entity — ตารางที่แสดงด้วยคลาสข้อมูล
- DAO — ออบเจกต์เข้าถึงข้อมูล ซึ่งกำหนดคำสั่งสืบค้น
- Database — เชื่อม Entity และ DAO เข้าด้วยกัน (บทเรียนถัดไป)
การกำหนด Entity
ใส่คำอธิบายกำกับคลาสข้อมูลด้วย @Entity พร็อพเพอร์ตีแต่ละรายการจะกลายเป็นคอลัมน์
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val email: String
)คีย์หลัก
Entity ทุกตัวต้องมี @PrimaryKey หากต้องการให้ Room สร้างรหัสโดยอัตโนมัติ ให้ใช้ autoGenerate
@Entity
data class Note(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val text: String
)การกำหนดคอลัมน์เอง
ใช้ @ColumnInfo เพื่อเปลี่ยนชื่อคอลัมน์หรือกำหนดชนิดข้อมูลของคอลัมน์
import androidx.room.ColumnInfo
@Entity
data class User(
@PrimaryKey val id: Int,
@ColumnInfo(name = "full_name")
val name: String
)DAO คืออะไร
DAO คืออินเทอร์เฟซที่ใส่คำอธิบายกำกับด้วย @Dao โดยประกาศเมธอดที่แอปใช้สำหรับอ่านและเขียนข้อมูล Room จะสร้างการนำไปใช้งานให้คุณ
เพิ่ม แก้ไข ลบ
Room มีคำอธิบายกำกับที่ช่วยอำนวยความสะดวกสำหรับการดำเนินการพื้นฐาน
@Dao
interface UserDao {
@Insert
suspend fun insert(user: User)
@Update
suspend fun update(user: User)
@Delete
suspend fun delete(user: User)
}กลยุทธ์จัดการข้อขัดแย้ง
เมื่อเพิ่มแถวที่มีอยู่แล้ว ให้เลือกกลยุทธ์ด้วย onConflict
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun upsert(user: User)คำสั่งสืบค้นแบบกำหนดเองด้วย @Query
คำอธิบายกำกับ @Query ช่วยให้คุณเขียน SQL ได้ โดย Room จะตรวจสอบคำสั่งขณะคอมไพล์เทียบกับโครงสร้างฐานข้อมูลของคุณ
@Query("SELECT * FROM users WHERE id = :id")
suspend fun getById(id: Int): User?เหตุใดจึงต้องใช้ฟังก์ชัน suspend
การรับส่งข้อมูลกับฐานข้อมูลต้องไม่ทำงานบนเธรดหลัก การกำหนดเมธอด DAO เป็น suspend ช่วยให้ Room เรียกใช้เมธอดเหล่านี้นอกเธรดหลักเมื่อเรียกจากคอร์รูทีน จึงป้องกันอาการหน่วงของส่วนติดต่อผู้ใช้
ความปลอดภัยขณะคอมไพล์
ข้อดีสำคัญของ Room คือ หากคุณพิมพ์ชื่อคอลัมน์ใน @Query ผิด การสร้างจะล้มเหลว คุณจึงพบข้อผิดพลาดได้ตั้งแต่เนิ่น ๆ แทนที่จะพบขณะรันไทม์
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ Entity และ DAO ของคุณ
สรุปทบทวน
สิ่งที่คุณได้เรียนรู้:
@Entityกำหนดตารางเป็นคลาสข้อมูลที่มี@PrimaryKey@Daoประกาศเมธอดสำหรับสืบค้น เพิ่ม แก้ไข และลบ- SQL ใน
@Queryจะถูกตรวจสอบขณะคอมไพล์ - เมธอด DAO ควรเป็น
suspendเพื่อทำงานรับส่งข้อมูลนอกเธรดหลัก
คำถามที่พบบ่อย
บทเรียน “เอนทิตีและ DAO” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เอนทิตีและ DAO” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เอนทิตีและ DAO”
กำหนดตารางและออบเจ็กต์การเข้าถึงข้อมูล คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เอนทิตีและ DAO” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ