Room — это библиотека, которая упрощает работу с SQLite
в Android
.
Она предоставляет абстракцию над SQLite
и использует аннотации для создания базы данных, таблиц и DAO
.
Room — это библиотека, которая:
- Упрощает работу с
SQLite
. - Предоставляет абстракцию над
SQLite
. - Использует аннотации для создания таблиц, запросов и управления базой данных.
- Поддерживает
LiveData
,Flow
иCoroutines
для асинхронной работы.
Entity — это класс, который представляет таблицу в базе данных. Каждое поле класса соответствует столбцу в таблице.
- @Entity - Указывает, что класс является таблицей.
- @PrimaryKey - Указывает первичный ключ.
- @ColumnInfo - Позволяет задать имя столбца.
DAO — это интерфейс, который предоставляет методы для доступа к данным.
Room
генерирует реализацию DAO
на основе аннотаций.
DAO — это паттерн, который отделяет логику работы с базой данных от остального кода. Он предоставляет методы для доступа к данным.
- @Insert - Добавляет данные в таблицу.
- @Query - Позволяет выполнять
SQL
-запросы. - @Update - Обновляет данные в таблице.
- @Delete - Удаляет данные из таблицы.
RoomDatabase — это абстрактный класс, который является точкой входа для работы с базой данных.
Он предоставляет DAO
и управляет созданием и обновлением базы данных.
- @Database - Указывает, что класс является базой данных.
- entities - Список
Entity
, которые будут использоваться в базе данных. - version - Версия базы данных.
- @Entity - Указывает, что класс является таблицей.
- @PrimaryKey - Указывает первичный ключ.
- @ColumnInfo - Позволяет задать имя столбца.
- @Ignore - Игнорирует поле при создании таблицы.
- @Insert - Добавляет данные в таблицу.
- @Query - Позволяет выполнять SQL-запросы.
- @Update - Обновляет данные в таблице.
- @Delete - Удаляет данные из таблицы.
- @Database - Указывает, что класс является базой данных.
- @TypeConverter - Позволяет добавлять кастомные преобразователи типов.
Room.databaseBuilder — это метод, который создает экземпляр базы данных.
val db = Room.databaseBuilder(
context.applicationContext,
AppDb::class.java,
"app_database"
).build()
- context - Контекст приложения.
- AppDb::class.java - Класс базы данных.
- "app_database" - Имя базы данных.
- Entity — это классы, которые представляют таблицы в базе данных.
- Каждое поле класса соответствует столбцу в таблице.
- DAO — это интерфейсы, которые предоставляют методы для доступа к данным.
- Room генерирует реализацию
DAO
на основе аннотаций.
- RoomDatabase — это точка входа для работы с базой данных.
- Он предоставляет
DAO
и управляет созданием и обновлением базы данных.
- Упрощение кода: Room автоматически генерирует
SQL
-запросы. - Безопасность: Защита от
SQL
-инъекций. - Поддержка LiveData и Flow: Упрощает работу с асинхронными данными.
- Проверка на этапе компиляции: Ошибки в
SQL
-запросах обнаруживаются на этапе компиляции.
SQLite — это встраиваемая реляционная база данных, которая хранит данные в виде таблиц. Она:
- Легковесная и не требует отдельного сервера.
- Хранит данные в одном файле.
- Поддерживает стандартный
SQL
(Structured Query Language
).
- CREATE TABLE - Создание таблицы.
CREATE TABLE Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
);
- INSERT - Добавление данных.
INSERT INTO Users (name, age) VALUES ('Сергей', 25);
- SELECT - Выборка данных.
SELECT * FROM Users;
- UPDATE - Обновление данных.
UPDATE Users SET age = 26 WHERE id = 1;
- DELETE - Удаление данных.
DELETE FROM Users WHERE id = 1;
Уникальный идентификатор строки в таблице.
Пример:
CREATE TABLE Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
Связывает две таблицы.
Пример:
CREATE TABLE Orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
userId INTEGER,
product TEXT,
FOREIGN KEY (userId) REFERENCES Users(id)
);
SQLiteOpenHelper — это класс, который помогает управлять созданием и обновлением базы данных.