Dao
@Target(allowedTargets = [AnnotationTarget.CLASS])
@Retention(value = AnnotationRetention.BINARY)
public annotation Dao
Marks the class as a Data Access Object.
Data Access Objects are the main classes where you define your database interactions. They can include a variety of query methods.
The class marked with @Dao should either be an interface or an abstract class. At compile time, Room will generate an implementation of this class when it is referenced by a androidx.room3.RoomDatabase that is annotated with Database.
An abstract @Dao class can optionally have a constructor that takes a Database as its only parameter:
@Dao
abstract class SongDao(private val database: RoomDatabase) {
// ...
}
It is recommended to have multiple Dao classes in your codebase depending on the tables they access.