УДК 004.4
РАЗРАБОТКА БАЗЫ ДАННЫХ ДЛЯ МОБИЛЬНОГО ПРИЛОЖЕНИЯ НА ОПЕРАЦИОННОЙ СИСТЕМЕ ANDROID
Винников Максим Дмитриевич
Студент, ФГБОУ вПо «Пензенский государственный технологический университет» E-mail: vinnikovmd17@gmail. com
Гудков Кирилл Владимирович
Научный руководитель, к. т.н., доцент, ФГБОУ ВПО «Пензенский государственный технологический университет»
В данной статье рассматривается создание базы данных для мобильного приложения с использованием ORM-фреймворка Room на языке программирования Kotlin. Представлены такие этапы, как создание сущности, которая представляет таблицу в базе данных, DAO класса, который реализует методы чтения, вставки, обновления и удаления данных, а также класса для получения доступа к самой базе данных.
Ключевые слова: мобильное приложение, программирование, информационные технологии, БД, СУБД, ОС Android, Kotlin, SQLite, ORM, фреймворк Room.
DEVELOPMENT OF A DATABASE FOR
A MOBILE APPLICATION ON
THE ANDROID OPERATING SYSTEM
Vinnikov M.D.
Student, Penza State Technological University E-mail: vinnikovmd17@gmail. com
GudkovK. V
Scientific supervisor, Candidate of Technical Sciences, Associate Professor, Penza State Technological University
This article discusses the creation of a database for a mobile application using the ORM framework Room in the programming language Kotlin. Presented are such steps as creating an entity that represents a table in the database, a DAO class that implements methods of reading, inserting, updating, and deleting data, as well as a class for accessing the database itself.
Keywords: Mobile application, programming, information technologies, DB, DBMS, Android OS, Kotlin, SQLite, ORM, Room framework.
В современном мире, любое мобильное приложения хранит необходимые данные для своего правильного функционирования. Следовательно, базы данных (сокр. БД) становиться неотъемлемой частью в работе программного обеспечения для мобильных устройств. Эффективное использование возможностей БД и систем управления базами данных (сокр. СУБД) для мобильного приложения, способствует более гибкой и эффективной работе приложений.
Room - это ORM-фреймворк для управления данными, представленный Google в 2017 году, который, на сегодняшний момент,
является частью коллекции Android Jetpack. Он обеспечивает более высокий уровень абстракции поверх SQLite API. Также Room использует обработчик аннотаций для сохранения данных. Другими словами, классы приложений или классы моделей не должны расширять классы в Room. Также, важными преимуществами является возможность настройки простой миграции данных и многопоточность.
При взаимодействии с Room выделяются три главных компонента:
- Класс для БД, который содержит саму БД и служит главной точкой доступа, лежащей
в основе подключения приложения к сохранённым данным.
- Сущности данных, которые представляют таблицы в БД мобильного приложения.
- Объекты для доступа данных, на англ. Data Access Objects (сокр. DAO), которые предоставляют методы, благодаря чему
Получ
Теперь, после краткого ознакомления работы с ORM-фреймворком Room и определения функционала мобильного приложения, стоит приступить к практической части, а именно реализации базы данных для операционной системы Android. Стоит уточнить, что в данной статье, для краткости, будет создана только сущность пользователя, реализованы базовые операции CRUD, а также разработан класс для представления базы данных.
приложение может использовать запросы на сохранение, на англ. Create, чтение, на англ. Read, обновление, на англ. Update, или удаление, на англ. Delete (сокр. CRUD), данных в БД.
Схема, иллюстрирующая работу основных компонентов в ORM-фреймворке Room, представлена на рисунке 1.
нить / Установить ачения полей
В классе сущности пользователя, помимо первичного ключа, содержатся такие поля, как имя пользователя, электронная почта, номер телефона, дата создания аккаунта, дата обновления (дата последнего входа в сеть), статус (онлайн или нет). Также все поля содержат ограничение «NOT NULL», а поля для номера телефона и электронной почты также содержат ограничение «UNIQUE».
Room БД
Объекты для доступа данных (DAOs)
ить объекты для та данных (DAOs)
Получить сущности из БД
Сохраненные изменения обратно в БД
Сущности
^ Полу
Остальная часть приложения
Рисунок 1 - Схема взаимодействия компонентов Room
@Entity(
tableName = "user", indices = [
Index(value = ["email", "phone"], unique = true), ],
)
data class AppUser( @PrimaryKey(autoGenerate = true) var id:Int,
var username: String,
@ColumnInfo(index = true) var email: String,
var password: String, @ColumnInfo(index = true) var phone: String?,
@ColumnInfo(name = "created_at") var createdAt: String,
@ColumnInfo(name = "updated_at") var updatedAt: String,
var status: Boolean,)
Листинг 1 - Класс сущности пользователя
DAO класс сущности пользователя данных. Данный класс представлен использует основные CRUD операции на в листинге 2. создание, чтение, обновление и удаление
@Dao
interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE) fun createUser(user: User)
@Update
fun updateUser(user: User) @Delete
fun deleteUser(user: User)
@Query("SELECT * FROM user")
fun findAllUsers(): List<User> }
Листинг 2 - DAO класс для сущности пользователя
После создания DAO для сущностей, классе перечислены все объекты, которые необходимо написать класс, который будет составляют БД. представлять доступ к самой БД. В данном
@Database(entities = [User::class, Motorcycle::class], version = 1) @TypeConverters
abstract class AppDatabase : RoomDatabase() { abstract fun userDao(): UserDao?
companion object {
private var INSTANCE: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase { synchronized(this) { var instance = INSTANCE if (instance == null) { instance = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java, "AppDatabase"
).fallbackToDestructiveMigration().build() INSTANCE = instance
}
return instance }
} } }
Листинг 3 - Класс для представления БД Подводя итоги, в данной статье была разработана сущность для представления разработана и спроектирована БД для таблицы в БД, DAO и класса для получения операционной системы Android, с экземпляра БД. использованием ORM-фреймворка Room. Была
ЛИТЕРАТУРА
1. Documentation for app developers [Электронный ресурс]. - Режим доступа: https: / /developer. android.com /docs
2. Save data in a local database using Room [Электронный ресурс]. - Режим доступа: https://developer.android.com/training/data-storage/room