​​Room

#разработка #библиотека 



Уже прошло прилично времени с момента анонса библиотеки Room от Google. Начав небольшой проект, решил попробовать ее как главную библиотеку для базы данных. Поделюсь мнением об этой библиотеке.



Вся работа с библиотекой осуществляется при помощи 3 аннотаций:



1) @Entity — аннотация, которая говорит о необходимости создания таблицы для данного класса. При этом, нужно указать @PrimaryKey, а также при желании имя таблицы, имена колонок и те поля, которые не нужно добавлять в базу. 



2) @Dao — аннотация для интерфейса, в которой описываются все методы для доступа к БД. Для методов этого интерфейса нужно указывать типы запросов, а также при желании можно написать свой запрос с помощью @Query



3) @Database — аннотация для абстрактного класса, где необходимо проинициализировать БД. 



Этих 3 сущностей достаточно для начала работы с базой. 



Мне понравилось: 

• быстрая установка базы;

• совместимость с RxJava;

• получение ошибок на этапе компиляции;

• инициализация для тестов (можно сделать БД, которая живет только во время жизни приложения, что удобно для тестирования);

• многопоточность;

• отсутствие необходимости наследования от базового класса БД.



Что касается скорости работы, то мне сложно сравнивать это с другими существующими решениями. Например, если верить этой статье, то Room не очень быстр. Однако, это синтетический тест, и всегда надо опираться на те задачи, которые решает БД в конкретном приложении. Да и скорость работы — это только один из параметров.



Впечатления от библиотеки остались положительные, поэтому рекомендую попробовать ее для работы. Чтобы было проще начать, воспользуйтесь этой статьей.