0Pricing
Android Academy · บทเรียน

เอนทิตีและ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เอนทิตีและ DAO
  2. คลาสฐานข้อมูล Room
  3. คำค้นและความสัมพันธ์
  4. การสังเกตข้อมูลด้วย Flow
← กลับไปที่ Android Academy