অ্যান্ড্রয়েডে ডিফল্ট ভাবে SQLite ডেটাবেজ থাকে। আমরা আমাদের অ্যাপে সহজেই SQLite ডেটাবেজ ব্যবহার করতে পারি। কিন্তু SQLite থেকে ফাস্টার ডেটাবেজ হচ্ছে Realm. Realm কিভাবে অ্যাপে ব্যবহার করা যায়, তাই দেখব।
অ্যান্ড্রয়েডে Realm ব্যবহারের পূর্ণাঙ্গ ডকুমেন্টেশন এখানে পাওয়া যাবে। রেল্ম এন্ড্রয়েড স্টুডিওতে ব্যবহার করার জন্য আমরা gradle ফাইলে Dependencies হিসবে যুক্ত করে নিতে পারিঃ
compile 'io.realm:realm-android:0.84.1'
রেল্ম ভার্সন নিয়মিত আপডেট হচ্ছে। তাই আপনি যখন ব্যবহার করবেন, Latest Realm থেকে ভার্সনটি চেক করে নিতে পারেন। অ্যান্ড্রয়েড প্রজেক্টের App ফোল্ডারে থাকে buildgradle ফাইলে Dependencies টা যুক্ত করার পর আমরা এবার আমাদের প্রজেক্টে রেল্ম ব্যবহার করতে পারি।
আমরা একটা ইউজার ক্লাস তৈরি করে নিব। সিম্পল POJO [Plain Old Java Object ] ক্লাস। যেমন User.java. এটিতে দুইটা মেম্বার ভ্যারিয়েবল রয়েছে। একটা name আর একটা email. এ দুইটা ভ্যারিয়েবলের জন্য আমরা Getter & Setter মেথড লিখেছি।
User.java:
import io.realm.RealmObject; public class User extends RealmObject { private String name; private String email; public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
রেল্ম ব্যবহার করার জন্য আমাদের রেল্ম এর instance তৈরি করে নিতে হবে। আর ঐ instance এ কিছু কনফিগারেশন পাস করতে হবে। যেমন আমাদের ডেটাবেজের নাম কি, ইত্যাদি। তা করতে হয় এভাবেঃ
realmConfig = new RealmConfiguration.Builder(this).name("user.realm").build(); realm = Realm.getInstance(realmConfig);
এখানে name(“user.realm”) এটা হচ্ছে আমাদের ডেটাবেজের নাম। যে কোন নামই আমরা ব্যবহার করতে পারি।
রেল্ম এ ডেটা রাখা হচ্ছে একটা Transiction. আর কোন Transaction করার আগে লিখতে হয় beginTransaction(); এবং Transition শেষ করার পড় লিখতে হয় commitTransaction();
Transaction শুরু করার পর রেল্ম এ আমরা কি ডেটা রাখব, তা বলে দিতে পারি। রেল্ম আমাদের জন্য অটোমেটিক টেবিল ক্রিয়েট করে নিবে। যেমন আমরা User এর নাম এবং Email রাখব, তা লিখতে পারি এভাবেঃ
realm.where(User.class).findAll().clear(); User user1 = realm.createObject(User.class); user1.setName("Elon Musk"); user1.setEmail("[email protected]");
এভাবে যত ইচ্ছে তত Transaction আমরা করতে পারি।
আমরা এর পড় রেল্ম থেকে কোয়েরি সহজেই করতে পারি। যেমন ইউজার টেবিলের সব গুলো ডাটা নিতে চাইলেঃ
RealmResults<User> results = realm.where(User.class).findAll();
সম্পুর্ণ MainActivity.java
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import io.realm.Realm; import io.realm.RealmConfiguration; import io.realm.RealmResults; public class MainActivity extends AppCompatActivity { private Realm realm; private RealmConfiguration realmConfig; private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.textView); realmConfig = new RealmConfiguration.Builder(this).name("user.realm").build(); realm = Realm.getInstance(realmConfig); realm.beginTransaction(); // Create objects and set data realm.where(User.class).findAll().clear(); User user1 = realm.createObject(User.class); user1.setName("Elon Musk"); user1.setEmail("[email protected]"); User user2 = realm.createObject(User.class); user2.setName("Bill Gates"); user2.setEmail("[email protected]"); User country3 = realm.createObject(User.class); country3.setName("Jeff Bezos"); country3.setEmail("[email protected]"); realm.commitTransaction(); RealmResults<User> results = realm.where(User.class).findAll(); for(User user:results) { mTextView.append("Name: " + user.getName() + "\n" ); mTextView.append("Email: " + user.getEmail() + "\n \n" ); } } }
আমরা কিছু ডেটা রেল্ম ডেটাবেজে রেখেছি। পড়ে ঐ ডেটা গুলো কোয়েরি করে একটা টেক্সট ভিউতে দেখিয়েছি। TextView টি যুক্ত করেছি activity_main.xml এঃ
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="me.jakir.realm.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" /> </RelativeLayout>
এই তো! সিম্পল। নিজ প্রজেক্টের জন্য সহজেই ব্যবহার করতে পারেন রেল্ম। কোন কিছু বুঝতে অসুবিধে হলে গুগল তো আছেই।
In awe of that anewrs! Really cool!