AndroidのRoomについて個人的にまとめたものです。内容には間違いが含まれている場合があります。
概要
- データベースを扱うための抽象化レイヤ
- SQL文がコンパイラによってチェックされる
依存関係
implementation 'androidx.room:room-runtime:2.2.5'- ライブラリ本体
kapt 'androidx.room:room-compiler:2.2.5'- アノテーションプロセッサ
implementation 'androidx.room:room-ktx:2.2.5'- Kotlin拡張およびコルーチンのサポート
構成要素
エンティティ
- データベースに格納するテーブルを定義するためのクラス
- そのクラスに
@Entityを付ける- その注釈の属性に定義を記述する
privateKeys:主キーとなる列名indices:索引の定義となるIndexforeignKeys:外部キーの定義となるForeignnKeyignoredColumns:テーブルに含めない列名
- その注釈の属性に定義を記述する
- メンバ変数に特定の注釈を付ける?
- 制約や索引を定義する
@PrimaryKey:主キー@Index:索引とユニーク制約@ForeignKey:外部キー
- Javaオブジェクトに変換するときの規則を定義する
@Relation:関連するエンティティをコレクションにまとめる@ColumnInfo:列名を明示したりする@Ignore:テーブルに含めない
- 制約や索引を定義する
- そのクラスに
ビュー
- ビューを定義するためのクラス
- そのクラスに
@DatabaseViewを付ける - 属性にSELECTクエリを記述する
- そのクラスに
DAO
- データベースにアクセスするためのメソッドを宣言する抽象クラス
- そのクラスに
@DAOを付ける - メソッドに
@Queryなどを付けて、その属性にSQL文を記述する- 引数があれば、クエリの中で使用できる
- 戻り値があれば、クエリの結果を受け取ることができる
- そのクラスに
Database
- データベースを定義するための抽象クラス
@Databaseを付ける- その属性
RoomDatabaseを継承する- DAOのインスタンスを返すメソッド