🤔 DAO (Data Access Object) Interface – āϏāĻšāϜ āĻ­াāώা⧟ āĻŦুāĻুāύ!

 

🤔 DAO (Data Access Object) Interface – āϏāĻšāϜ āĻ­াāώা⧟ āĻŦুāĻুāύ!

đŸŽ¯ DAO āĻ•ী?

👉 DAO (Data Access Object) āĻšāϞো Room Database-āĻāϰ āĻ…ংāĻļ, āϝা SQLite Database āĻŦ্āϝāĻŦāĻšাāϰেāϰ āϜāύ্āϝ āϏāĻšāϜ āĻ•āϰে āĻĻে⧟। āĻāϟি āĻ•োāĻĄেāϰ āĻŽাāϧ্āϝāĻŽে āĻĄাāϟাāĻŦেāϏেāϰ āϏাāĻĨে āϏংāϝোāĻ— āĻ•āϰে āĻāĻŦং āĻĄাāϟাāĻ—ুāϞো āϏংāϰāĻ•্āώāĻŖ, āφāĻĒāĻĄেāϟ, āĻŽুāĻ›āϤে āĻ“ āφāύāϤে āϏাāĻšাāϝ্āϝ āĻ•āϰে।

⚡ āĻ•েāύ DAO āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦ?

💡 āϝāĻĻি āφāĻĒāύি SQLite āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰেāύ, āϤাāĻšāϞে āĻĒ্āϰāϤিāĻŦাāϰ Raw Query āϞিāĻ–āϤে āĻšā§Ÿ, āϝা āĻ…āύেāĻ• āϜāϟিāϞ āĻ“ āϏāĻŽā§ŸāϏাāĻĒেāĻ•্āώ।
💡 āĻ•িāύ্āϤু Room Library + DAO āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāϞে āϏāĻšāϜāĻ­াāĻŦে @Query āĻĻি⧟ে āĻĄাāϟাāĻŦেāϏ āĻŽ্āϝাāύেāϜ āĻ•āϰা āϝা⧟!


đŸŽ¯ DAO-āĻāϰ āĻ•াāϜ āĻ•ী?

DAO āĻŽূāϞāϤ āϤিāύāϟি āĻ•াāϜ āĻ•āϰে:
1️⃣ āĻĄাāϟা āϝোāĻ— āĻ•āϰা (Insert)
2️⃣ āĻĄাāϟা āĻĒ⧜া (Read)
3️⃣ āĻĄাāϟা āφāĻĒāĻĄেāϟ/āĻŽুāĻ›া (Update/Delete)

🔹 āωāĻĻাāĻšāϰāĻŖ: āϧāϰুāύ āφāĻĒāύাāϰ āĻ•াāĻ›ে "User" āύাāĻŽে āĻāĻ•āϟি āϟেāĻŦিāϞ āφāĻ›ে, āϝেāĻ–াāύে Name āĻāĻŦং Age āϏ্āϟোāϰ āĻšā§Ÿ।


🛠 ā§§. DAO Interface āϤৈāϰি āĻ•āϰা

DAO āĻāĻ•āϟি interface, āϝেāĻ–াāύে @Dao annotation āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšā§Ÿ।

@Dao
interface UserDao {

    // ā§§️⃣ āύāϤুāύ āχāωāϜাāϰ āϝোāĻ— āĻ•āϰা
    @Insert
    suspend fun insertUser(user: User)

    // ⧍️⃣ āϏāĻŦ āχāωāϜাāϰ āĻĻেāĻ–াāύো
    @Query("SELECT * FROM user_table")
    fun getAllUsers(): LiveData<List<User>>

    // ā§Š️⃣ āύিāϰ্āĻĻিāώ্āϟ āχāωāϜাāϰ āĻ–োঁāϜা
    @Query("SELECT * FROM user_table WHERE id = :userId")
    suspend fun getUserById(userId: Int): User?

    // ā§Ē️⃣ āχāωāϜাāϰেāϰ āĻŦ⧟āϏ āφāĻĒāĻĄেāϟ āĻ•āϰা
    @Query("UPDATE user_table SET age = :newAge WHERE id = :userId")
    suspend fun updateUserAge(userId: Int, newAge: Int)

    // ā§Ģ️⃣ āχāωāϜাāϰ āĻĄিāϞিāϟ āĻ•āϰা
    @Delete
    suspend fun deleteUser(user: User)
}

đŸ”Ĩ DAO-āĻāϰ āĻ—ুāϰুāϤ্āĻŦāĻĒূāϰ্āĻŖ āĻ…ংāĻļ āĻŦ্āϝাāĻ–্āϝা

1. @Dao
👉 āĻāϟি Room Library-āĻ•ে āĻŦāϞে āϝে āĻāχ Interface āĻĄাāϟাāĻŦেāϏেāϰ āϏাāĻĨে āĻ•াāϜ āĻ•āϰāĻŦে।

2. @Insert
👉 āĻāϟি āύāϤুāύ āĻĄাāϟা āϏংāϰāĻ•্āώāĻŖ (Insert) āĻ•āϰāϤে āĻŦ্āϝāĻŦāĻšাāϰ āĻšā§Ÿ।
👉 suspend fun āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āĻšā§ŸেāĻ›ে, āĻ•াāϰāĻŖ āĻāϟি Coroutines-āĻāϰ āĻŽাāϧ্āϝāĻŽে āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄ āĻĨ্āϰেāĻĄে āϚāϞে।

3. @Query
👉 āĻāϟি Custom Query āϚাāϞাāϤে āϏাāĻšাāϝ্āϝ āĻ•āϰে।
👉 :userId āĻāϰ āĻŽাāϧ্āϝāĻŽে āĻĄাāχāύাāĻŽিāĻ• Query āϞেāĻ–া āϝা⧟।

4. @Delete
👉 āĻāϟি āĻāĻ•āϟি āύিāϰ্āĻĻিāώ্āϟ āχāωāϜাāϰ āĻĄিāϞিāϟ āĻ•āϰāϤে āϏাāĻšাāϝ্āϝ āĻ•āϰে।


đŸŽ¯ DAO + Repository + ViewModel āϏংāϝোāĻ—

DAO āĻāĻ•া āĻ•াāϜ āĻ•āϰে āύা! āĻāϟি Repository āĻ“ ViewModel-āĻāϰ āϏাāĻĨে āĻŽিāϞে āĻ•াāϜ āĻ•āϰে।

ā§§. Repository (āĻĄাāϟাāĻŦেāϏ āĻ…āĻĒাāϰেāĻļāύ āĻŽ্āϝাāύেāϜ āĻ•āϰে)

class UserRepository(private val userDao: UserDao) {

    val allUsers: LiveData<List<User>> = userDao.getAllUsers()

    suspend fun insert(user: User) {
        userDao.insertUser(user)
    }

    suspend fun updateAge(userId: Int, newAge: Int) {
        userDao.updateUserAge(userId, newAge)
    }

    suspend fun deleteUser(user: User) {
        userDao.deleteUser(user)
    }
}

⧍. ViewModel (UI-āĻāϰ āϏাāĻĨে āĻĄাāϟা āĻ•াāύেāĻ•্āϟ āĻ•āϰে)

class UserViewModel(private val repository: UserRepository) : ViewModel() {

    val allUsers: LiveData<List<User>> = repository.allUsers

    fun insert(user: User) = viewModelScope.launch {
        repository.insert(user)
    }

    fun updateAge(userId: Int, newAge: Int) = viewModelScope.launch {
        repository.updateAge(userId, newAge)
    }

    fun deleteUser(user: User) = viewModelScope.launch {
        repository.deleteUser(user)
    }
}

đŸŽ¯ āϏংāĻ•্āώেāĻĒে āĻŦোāĻা āϝাāĻ•!

✅ DAO āĻšāϞো Room Database-āĻāϰ āϜāύ্āϝ āĻāĻ•āϟি Bridge, āϝা āϏāĻšāϜে Insert, Query, Update, Delete āĻ•āϰāϤে āϏাāĻšাāϝ্āϝ āĻ•āϰে।
✅ āĻāϟি Interface āφāĻ•াāϰে āĻĨাāĻ•ে āĻāĻŦং @Query, @Insert, @Delete, @Update āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰে āĻĄাāϟাāĻŦেāϏ āĻŽ্āϝাāύিāĻĒুāϞেāĻļāύ āĻ•āϰে।
✅ āĻāϟি Repository + ViewModel-āĻāϰ āĻŽাāϧ্āϝāĻŽে UI-āϤে āĻĄাāϟা āĻĒাāĻ া⧟


đŸŽ¯ āĻ•েāύ DAO āĻ—ুāϰুāϤ্āĻŦāĻĒূāϰ্āĻŖ?

Raw Query āϞেāĻ–া āϞাāĻ—ে āύা (āϏāĻšāϜāĻ­াāĻŦে āĻ•াāϜ āĻ•āϰা āϝা⧟)।
LiveData āĻ“ Coroutines āϏাāĻĒোāϰ্āϟ āĻ•āϰে (āĻŦ্āϝাāĻ•āĻ—্āϰাāωāύ্āĻĄে āĻ•াāϜ āĻ•āϰāϤে āĻĒাāϰে)।
SQLite-āĻāϰ āϚে⧟ে āϏāĻšāϜ āĻ“ āĻļāĻ•্āϤিāĻļাāϞী।

📌 āĻāĻ–āύ āφāĻĒāύাāϰ Android āĻ…্āϝাāĻĒে DAO āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰে āĻĄাāϟাāĻŦেāϏ āĻŽ্āϝাāύেāϜ āĻ•āϰāϤে āĻĒাāϰāĻŦেāύ! 🚀
😊 āĻ•োāύো āĻĒ্āϰāĻļ্āύ āĻĨাāĻ•āϞে āĻŦāϞুāύ!

🤔 DAO (Data Access Object) Interface - Understand in simple terms!

Comments

Popular posts from this blog

AI (Artificial Intelligence) āϏāĻšāϜāĻ­াāĻŦে āĻŦোāĻাāϰ āϜāύ্āϝ āĻāĻ•āĻĻāĻŽ āĻŽāϏ্āϤিāώ্āĻ•-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ–্āϝা 🧠🤖

🧠 Regex āĻ•ী?

Kotlin-āĻ āĻ­েāϰিāϝ়েāĻŦāϞ āϘোāώāĻŖা āĻ•āϰাāϰ āĻĻুāχ āωāĻĒাāϝ়