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.

Summary

Public constructors

Dao()
Cmn

Public constructors

Dao

Dao()