Membuat Entitas
Pada aplikasi dalam percobaan ini membutuhkan data user dan note. Setiap
data tersebut dikenal dengan Entity.
Perhatikan pada dua class User dan Note. Dalam entitas terdapat constructor
serta setter dan getter. Hal ini diperlukan sehingga Room dapat mengenal
bagaimana sebuah object akan dibuat.
Room menggunakan annotation untuk mendeklarasikan struktur schema tabel.
Dengan annotation ini Room dapat mengidentifikasi setiap bagian pada class yang
terkait dengan database dan meng-generate code. Lakukan langkah berikut untuk
mendefinisikan schema pada class User dan Note.
Tambahkan annotation
@Entity(tableName = "users")pada classUsersehingga menjadi seperti berikut.@Entity(tableName = "users") public class User { ... }Lakukan hal yang sama juga untuk class
Note, tetapi set nilaitableNamedengan nilainotes.Definisikan primary key pada masing-masing entitas dengan menggunakan annotation
@PrimaryKeydan auto increment. Kode untuk implementasi dapat dilihat sebagai berikut.... @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") private Long id; ...Untuk mendefinisikan mandatory kolom (tidak boleh
null), Room menggunakan annotation@NonNull. Tambahkan annotation tersebut di kolom entitas yang bersifat mandatory.Room hanya bisa menggunakan satu constructor dalam satu class, jika terdapat lebih dari satu constructor dalam entitas diperlukan penambahan annotation
@Ignore.@Ignore public User(String username, String password) { this(null, username, password); }... @Ignore public Note() { } @Ignore public Note(String title, Date date, String content) { this(null, title, date, content); } ...Pada class
Noteterdapat kolom date yang bertipeDate. Room secara default hanya mendukung tipe data yang didefinisikan dijava.lang. Jika terdapat tipe data khusus, maka dibutuhkan class bantu untuk mengkonversi nilai tersebut.Buatlah sebuah class
DateConverterdan letakkan pada packagedbpublic class DateConverter { @TypeConverter public static Date toDate(Long timestamp) { return timestamp == null ? null : new Date(timestamp); } @TypeConverter public static Long toTimestamp(Date date) { return date == null ? null : date.getTime(); } }
Referensi: Mendefinisikan Entitas Room