Skip to content
Go back

Android.Roomメモ

· Updated:

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:索引の定義となるIndex
        • foreignKeys:外部キーの定義となるForeignnKey
        • ignoredColumns:テーブルに含めない列名
    • メンバ変数に特定の注釈を付ける?
      • 制約や索引を定義する
        • @PrimaryKey:主キー
        • @Index:索引とユニーク制約
        • @ForeignKey:外部キー
      • Javaオブジェクトに変換するときの規則を定義する
        • @Relation:関連するエンティティをコレクションにまとめる
        • @ColumnInfo:列名を明示したりする
        • @Ignore:テーブルに含めない

ビュー

  • ビューを定義するためのクラス
    • そのクラスに@DatabaseViewを付ける
    • 属性にSELECTクエリを記述する

DAO

  • データベースにアクセスするためのメソッドを宣言する抽象クラス
    • そのクラスに@DAOを付ける
    • メソッドに@Queryなどを付けて、その属性にSQL文を記述する
      • 引数があれば、クエリの中で使用できる
      • 戻り値があれば、クエリの結果を受け取ることができる

Database

  • データベースを定義するための抽象クラス
    • @Databaseを付ける
      • その属性
    • RoomDatabaseを継承する
    • DAOのインスタンスを返すメソッド