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 classUser
sehingga menjadi seperti berikut.@Entity(tableName = "users") public class User { ... }
Lakukan hal yang sama juga untuk class
Note
, tetapi set nilaitableName
dengan nilainotes
.Definisikan primary key pada masing-masing entitas dengan menggunakan annotation
@PrimaryKey
dan 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
Note
terdapat 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
DateConverter
dan letakkan pada packagedb
public 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