Room 永続ライブラリは SQLite データベース ビューをサポートしており、クエリを クラスにカプセル化できます。Room では、このようなクエリベース クラスを「ビュー」と呼びます。ビューは データアクセス オブジェクト(DAO)内でデータ オブジェクトとして使用できます。
ビューを作成する
ビューを作成するには、クラスに @DatabaseView アノテーションを追加します。アノテーションの値を、クラスが表現するクエリに設定します。
ビューの例を次のコード スニペットに示します。
@DatabaseView( """ SELECT User.id, User.name, User.departmentId, Department.name AS departmentName FROM User INNER JOIN Department ON User.departmentId = Department.id """ ) data class UserDetail( val id: Long, val name: String?, val departmentId: Long, val departmentName: String? )
ビューをデータベースに関連付ける
このビューをデータベースに含めるには、アプリの
@Database アノテーションに views プロパティを追加します。
@Database( entities = [User::class, Department::class], views = [UserDetail::class], version = 1 ) abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao }