4
2

More than 1 year has passed since last update.

【Android】Roomについて

Last updated at Posted at 2022-10-23

はじめに

前回アノテーションについて調べた時に Room関連のアノテーションが多かったのでRoomについて調べたので、
その内容を記事にしたいと思います。

Room

Androidデベロッパーでは

Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのより安定したアクセスを可能にし、SQLite を最大限に活用できるようにします。

とあります。

SQLiteとはデータベースの一つで、
データの保存に単一のファイルのみを使用することが特徴である サーバーではなくアプリケーションに組み込んで利用されるデータベースのことです。

今回はRoomについてですので、SQLiteの説明は簡単に終わりにしておきます

今回の本題「Room」とは 簡単にいうと
Android Jetpackライブラリの一つ で「アプリ内で入力されたデータを 登録更新削除することができる」
という機能を持った データベース(SQLite)の操作を簡単にできるライブラリです。

主要コンポーネント

以下の3つのクラスを作ることでRoomを扱うことができます

・Database class

・Data entities

・Data access objects

それぞれ以下で簡単に説明していきます

Database (Database class)

abstract classに@Databaseアノテーションをつける
Androidデベロッパーでは
・Room Databaseを継承している必要がある
・データベースに紐づけられたEntityのリストを含むアノテーションをつける必要がある
・Daoアノテーションが付けられたインターフェースの抽象メソッドを定義する必要がある

とあります
最後に作った方が分かりやすそう?

@Database(entities = [userItemEntity::class], version = 1)
abstract class UserItemDataBase : RoomDatabase() {
    abstract fun UserItemDao(): UserItemDao
}

Entity (Data entities)

Databaseクラスに @Entityアノテーションをつける
・Roomではクラス名がデータベーステーブル名として使用される。テーブル名を別の名前にしたい場合は@EntityのtableNameを設定する
・同じようにフィールド名もデータベースの列名として使用される。別で名前をつけたい場合は@ColumnInfoアノテーションを追加しnameを設定する
・一つのEntityクラスに最低一つの @PrimaryKeyが必要 基本的には変数につけるアノテーション
・@Ignoreがついた要素はDBに追加されない

@Entity(tableName = "item_data")
data class userItemEntity(
    @PrimaryKey(autoGenerate = false)val id: String

RoomでEntityインスタンスに自動でIDを割り当てる必要がある場合は @PrimaryKeyのautoGenerateをtrueにする必要があります。

DAO(Data access objects)

interfaceに @DAOアノテーションをつける
@DAOアノテーションをつけたインターフェース内で
・@Insert Entityに基づくデータをDBに挿入する
・@Delete Entityを引数にもつメソッドにつけるとDB内から削除する
・@Query SELECT文を記述することで取得することができる?

おわりに

今回の記事を書くことで前回何と無く調べた内容で書いた
アノテーション達の詳しい内容やルールがわかった気がします
これで、Roomを使うときやRoomを使ったロジックを読むときに臆さずにいることができます
自分で調べた中での解釈で書いているので間違いがある可能性もあり、まだまだ勉強が必要だと思いました

実際に一から使う機会があったら、また記事にできたらいいなと思います

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2