ORM های برتر برنامه نویسی اندروید
هنگامی که در حال پیاده سازی دیتابیس در برنامه نویسی اندروید برای ذخیره سازی اطلاعات در حافظه داخلی را دارید,میبایستی بتوانید اطلاعات خود را در دیتابیس Sqlite ذخیره سازی نماید.برای اینکه به روش های بهینه تری بتوانید دیتابیس خود را مدیریت کنید,از جمله بهترین کارهای استفاده از ORM میباشد.قبل از هرکاری ابتدا میبایستی با مفهوم ORM آشنا شویم.
ORM چیست ؟
ORM مخفف عبارت Object-Relational Mapping به مفهوم روش یا تکنیکی مدرن که این امکان را به برنامه نویس میدهد تا Query را از سمت برنامه (Program) انجام دهد و امکان Manipulate یا دستکاری بروی داده بدون اتصال مستقیم به دیتابیس انجام شود در شیوه های قدیمی یا سنتی برای دسترسی به اطلاعات DBMS یا Database Management System عملیات Query میبایستی به شکل SQL نوشته می شد ولی با استفاده از ORM نیاز نیست حتما کدهای SQL را بنویسیم زمانی که از ORM استفاده کنیم نیاز نیست حتما ما دستورات SQL را بلد باشیم کافی است بتوانیم از ORM استفاده کنیم تا داده ها را از دیتابیس دریافت کنیم.
در این مقاله قصد داریم با برترین ORM های اندروید آشنا شویم.پس بیاید با این کتابخانه ها آشنا شویم
Room
در کنفرانس Google i/o سال ۲۰۱۷ گوگل کتابخانه Room Persistence که یک Wrapper روی Sqlite میباشد را معرفی کرد.هدف از Room پیاده سازی تمیز در استفاده از دیتابیس Sqlite میباشد.یکی از نکات مهم در پیاده سازی کتابخانه Room, پیاده سازی این کتابخانه توسط معماری clean architecture میباشد.
@Entity(tableName = "user")
public class User {
@PrimaryKey(autoGenerate = true)
private int uid;
@ColumnInfo(name = "first_name")
private String firstName;
@ColumnInfo(name = "last_name")
private String lastName;
//getters and setters go here
}
برای آشنایی بیشتر با کتابخانه Room میتوانید وارد داکیومنت اصلی Room شوید.
OrmLite
کتابخانه OrmLite یک کتابخانه ORM ساده و قدرتمند برای جاوا و اندروید می باشد.این کتابخانه حتی در فریمورک های مهم جاوا مانند Spring نیز قابلیت استفاده از آن را خواهید داشت.
@DatabaseTable(tableName = "account")
public class Account {
@DatabaseField(id = true)
private String username;
@DatabaseField(canBeNull = false)
private String password;
Account() {
// a must defined no-arg constructor
}
public Account(String username, String password) {
this.username = username;
this.password = password;
}
//...getter and setter methods can go below
}
کتابخانه OrmLite اوپن سورس میباشد و میتوانید از طریق Github آن را دانلود و استفاده کنید.مستندات OrmLite
SugarORM
کتابخانه SugarORM یک کتابخانه ساده که فقط برای اندروید میباشد که با روش ساده ای میتوانید از این ORM استفاده کنید.با استفاده از این کتابخانه همچنین توانایی پیاده سازی رابطه های یک به یک و همچنین چند به چند را نیز خواهید داشت.برای پیاده سازی عملیات های دیتابیسی نیاز به نوشتن هیچ دستوری Sql را ندارید و بسیار راحت میتوانید با صدا زدن دستورات save,delete,find و یا findId میتوانید عملیات های دیتابیسی را انجام دهید.
برای پیاده سازی این کتابخانه در پروژه خود ابتدا میبایستی کتابخانه را به پروژه خود اضافه کنید و سپس به فایل AndroidManifest بروید و دستورات زیر را در تگ Application قرار دهید.
<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" />
سپس یک مدل ایجاد کنید و از SugarRecord ارث بری کنید.در این کلاس قصد داریم اطلاعات User را در دیتابیس ذخیره نماییم
public class User extends SugarRecord<User> {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
this.username = username;
this.password = password;
this.age = age;
}
}
در قدم اخر کافی است یک شی از کلاس User ایجاد کنید
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
مثال دیگر برای این کتابخانه بدست آوردن کل اطلاعات این جدول براساس شرط نوشته شده و همچنین حذف تمامی اطلاعات میباشد.
List<User> nineteens = User.find(User.class,"age = ?",new int[]{19});
foreach(user in nineteens) {
user.delete();
}
برای آشنایی بیشتر با این کتابخانه می توانید وارد کتابخانه رسمی SugarORM آن شوید.
Active Android
یکی دیگر از کتابخانه های ORM برای اندروید Active Android میباشد که توانایی ذخیره سازی و fetch کردن اطلاعات بدون نوشتن هیچ Query را می دهد.برای پیاده سازی Active Android فقط کافی است فایل jar کتابخانه را وارد پروژه خود کنید تا بتوانید این ORM را استفاده کنید.
برای شروع بکار با Active Android کافی است به فایل AndroidManifest رفته و در تگ Application دستورات زیر را قرار دهید.
<meta-data android:name="AA_DB_NAME" android:value="my_database.db" />
<meta-data android:name="AA_DB_VERSION" android:value="1" />
در قدم بعدی حتما میبایستی در اکتیویتی دستور زیر را قرار دهید
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActiveAndroid.initialize(this);
}
}
برای پیاده سازی این ORM میبایستی Annotation کتابخانه را در بالای کلاس قرار دهید.
@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;
}
}
GreenDAO
شعار اصلی GreenDAO سرعت و کارایی میباشد و ۴.۵ برابر پر سرعت تر از OrmLite میباشد.کتابخانه GreenDAo روی اپلیکیشن های مشهوری مانند Pinterest,Path و همچنین Glide وجود دارند
Realm
سرانجام میرسیم به Realm. کتابخانه Realm از جمله برترین ORM های اندروید میباشد.Realm با زبان برنامه نویسی سی پلاس پلاس توسعه داده شده و همین موجب شده است دارای سرعت بالایی نسب به بقیه ORM ها شده است.Realm برای هر دو سیستم عامل اندروید و iOS توسعه داده شده است. نکته اصلی که در مورد Realm بدانید این میباشد که Realm برساس Sqlite نمی باشد و خود یک دیتابیس جدید برای موبایل میباشد که بصورت No Sql میباشد.
public class Dog extends RealmObject {
private String name;
private int age;
// ... Generated getters and setters ...
}
برای پیاده سازی ابتدا باید یک instance از Realm ایجاد کنید و کارهای لازمه را ایجاد کنید
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);
// Initialize Realm (just once per application)
Realm.init(context);
// Get a Realm instance for this thread
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
realm.commitTransaction();
در آموزش های بعد حتما بطور کامل کار با کتابخانه Realm قرار داده خواهد شد. برای اشنایی بیشتر با Realm می توانید به وب سایت Realm.io مراجعه نمایید.
نتیجه گیری
در این آموزش با شش کتابخانه ORM آشنا شدیم که در بسیاری از اپلیکیشن های اندروید مورد استفاده قرار میگیرند.به جرات میشه گفت در حال حاضر Room و Relam در حال حاضر محبوب ترین ORM ها در اندروید می باشند.همچنین با جستجو در اینترنت میتوانید با بقیه ORM ها مانند DBFlow,Androrm,ormDroid نیز آشنا شوید.
دیدگاهتان را بنویسید