Membuat tampilan ke dalam database

Library persistensi Room versi 2.1.0 dan yang lebih tinggi memberikan dukungan untuk tampilan database SQLite sehingga Anda dapat menyertakan kueri ke dalam class. Room merujuk pada class yang didukung kueri ini sebagai tampilan, dan berfungsi sama seperti objek data sederhana saat digunakan dalam DAO.

Membuat tampilan

Untuk membuat tampilan, tambahkan anotasi @DatabaseView ke class. Tetapkan nilai anotasi ke kueri yang harus direpresentasikan oleh class tersebut.

Cuplikan kode berikut memberikan contoh tampilan:

Kotlin

    @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?
    )
    

Java

    @DatabaseView("SELECT user.id, user.name, user.departmentId," +
                  "department.name AS departmentName FROM user " +
                  "INNER JOIN department ON user.departmentId = department.id")
    public class UserDetail {
        public long id;
        public String name;
        public long departmentId;
        public String departmentName;
    }
    

Mengaitkan tampilan dengan database Anda

Untuk menyertakan tampilan ini sebagai bagian dari database aplikasi, sertakan properti views dalam anotasi @Database aplikasi Anda:

Kotlin

    @Database(entities = arrayOf(User::class),
              views = arrayOf(UserDetail::class), version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Java

    @Database(entities = {User.class}, views = {UserDetail.class},
              version = 1)
    public abstract class AppDatabase extends RoomDatabase {
        public abstract UserDao userDao();
    }