đ¤ 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 āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻĄাāĻাāĻŦেāϏ āĻŽ্āϝাāύেāĻ āĻāϰāϤে āĻĒাāϰāĻŦেāύ! đ
đ āĻোāύো āĻĒ্āϰāĻļ্āύ āĻĨাāĻāϞে āĻŦāϞুāύ!
Comments
Post a Comment