Если вы разрабатываете приложения для Android, то вам, скорее всего, нужно хранить данные. Если данных много, то для этого хорошо подойдет база данных SQLite. Для хранения данных в БД вам придется выбирать между SQL-запросами, используя Content Provider, или с помощью ORM .
ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как проприетарные, так и свободные реализации этой технологии.ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
Википедия
В этой статье рассмотрю некоторые из ORM-библиотек, которые вы можете использовать в своих будущих проектах.
OrmLite
OrmLite первая ORM, которая приходит в голову. Однако OrmLite — это не Android-ORM, это Java-ORM с поддержкой баз данных SQL. Он может быть использован в любом месте где используется Java.
Аннотация @DatabaseTable служит для определения класса как таблицы, а аннотация @DatabaseField должна быть над каждым полем в классе.
Простой пример использования OrmLite
@DatabaseTable(tableName = "users") public class User { @DatabaseField(id = true) private String username; @DatabaseField private String password; public User() { // ORMLite нуждается в конструкторе без аргументов } public User(String username, String password) { this.username = username; this.password = password; } // геттеры и сеттеры public String getUserame() { return this.username; } public void setName(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
OrmLite для Android — это проект с открытым исходным кодом, который вы можете найти на GitHub . Для получения более подробной информации перейдите к официальной документации.
SugarORM
SugarORM это ORM, предназначен только для Android. Он поставляется с простым в освоении API, который легко запомнить. Всего есть 4 метода: save(), delete() and find() (or findById()).
Настроим приложение, чтобы использовать SugarORM, добавив мета-данные AndroidManifest.xml:
<meta-data android:name="DATABASE" android:value="my_database.db"> <meta-data android:name="VERSION" android:value="1"> <meta-data android:name="QUERY_LOG" android:value="true"> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain">
Теперь вы можете использовать эту ORM, унаследовав нужные классы от SugarRecord
public class User extends SugarRecord<User> { String username; String password; int age; @Ignore String bio; //это будет проигнорировано SugarORM public User() { } public User(String username, String password,int age){ this.username = username; this.password = password; this.age = age; } }
Теперь добавим нового пользователя:
User johndoe = new User(getContext(),"john.doe","secret",19); johndoe.save(); //stores the new user into the database
Удалим всех пользователей в возрасте 19 лет:
List<User> nineteens = User.find(User.class,"age = ?",new int[]{19}); foreach(user in nineteens) { user.delete(); }
Для получения большей информации, читайте онлайн-документацию .
GreenDAO
Когда дело доходит до производительности, ‘быстрый’ и GreenDAO являются синонимами. На сайте библиотеки говорится, что “большинство объектов могут быть вставлены, обновлены и загружены со скоростью нескольких тысяч объект в секунду”. Если это не так уж хорошо, эти приложения просто не станет им пользоваться. По сравнению с OrmLite, это почти в 4,5 раза быстрее. Эту библиотеку используют довольно известные приложения такие как Pinterest, Path, WiFi Map Pro и другие. Эта библиотека почти в 4,5 раза быстрее OrmLite.
Библиотека весит меньше 100 килобайт, что не сильно повлияет на размер APK.
Вы можете просмотреть исходный код GreenDAO на GitHub , а также почитать официальную документацию GreenDAO .
Active Android
Как и другие ORM, ActiveAndroid позволяет хранить и извлекать записи из SQLite без написания SQL-запросов. Можно подключить ActiveAndroid добавив jar-файл в папку /libs вашего проекта.
После подключения его, вы должны добавить эти мета-данные в AndroidManifest.xml :
<meta-data android:name="AA_DB_NAME" android:value="my_database.db"> <meta-data android:name="AA_DB_VERSION" android:value="1">
После добавления мета-данных, вы можете вызвать метод ActiveAndroid.initialize() в вашем Activity:
public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActiveAndroid.initialize(this); //rest of the app } }
Теперь, когда приложение настроено на использование ActiveAndroid, вы можете создавать модели, как классы Java, используя аннотации:
@Table(name = "User") public class User extends Model { @Column(name = "username") public String username; @Column(name = "password") public String password; public User() { super(); } public User(String username,String password) { super(); this.username = username; this.password = password; } }
Это простой пример использования ActiveAndroid. Документация поможет вам понять, как использовать ActiveAndroid ORM дальше.
Заключение
Это не все из существующих AndroidORM. Есть также Androrm и ORMDroid. Знание SQL — навык, который должен иметь каждый разработчик, но писать SQL-запросы скучно, особенно, когда есть так много ORM. Если они делают вашу работу проще, то почему бы не начать использовать их?
Источник: 5 of the Best Android ORMs