tgoop.com/mobileproglib/5760
Create:
Last Update:
Last Update:
Как это работает
Room — это ORM-библиотека для Android, которая упрощает работу с SQLite. Она автоматически генерирует boilerplate-код для операций с БД, проверяет SQL-запросы на этапе компиляции и предоставляет удобные абстракции:- @Entity
— определяет таблицу в БД.- @Dao
(Data Access Object) — содержит методы для запросов (вставка, обновление, выборка).- @Database
— главный класс, который связывает сущности и DAO.
Если названия полей в классе и таблице не совпадают, используйте @ColumnInfo
:
@Entity(tableName = "users")
data class User( @PrimaryKey val id: Int,
@ColumnInfo(name = "user_name") val name: String
)
Как начать
1.Добавьте зависимости в
build.gradle
(Module):implementation "androidx.room:room-runtime:2.6.0"
kapt "androidx.room:room-compiler:2.6.0" // для Kotlin
2.Создайте Entity, Dao и Database:
@Dao
interface UserDao { @Query("SELECT * FROM users")
fun getAll(): List<User>
@Insert
fun insert(user: User)
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
3.Инициализируйте БД в приложении:
val db = Room.databaseBuilder(
context, AppDatabase::class.java, "my-database"
).build()
Лучшие практики
version
и добавляйте миграцию:val migration = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER")
}
}
Flow
:@Query("SELECT * FROM users")
fun getAllFlow(): Flow<List<User>>
Где применять
Используете Room? Делитесь лайфхаками в комментах!
Библиотека мобильного разработчика #буст