Android

Room Persistence Library – Learn Deeply

বিসমিল্লাহির রহমানির রহিম 🙂

Room Persistence Library

কেন আমরা ROOM ব্যবহার করব? 

GOOGLE highly recommend to use Room instead of SQLite

রুম হচ্ছে SQLite DB এর একটি এবস্ট্রাকশন লেয়ার, যেটি দিয়ে DB থেকে খুব সহজেই ডাটা পাওয়া যায়।

রুম ব্যবহার করে আমরা বয়লারপ্লেট কোড কমাতে পারি। ইন্সার্টন  এবং ডিলেশন ব্যাপারগুলো খুব সহজ করা হয়েছে এখানে। এটি ডাটা ক্যাশ করে রাখে যার ফলে এপের ডাটা গুলোর ফুল কপি সহজেই লোড হয়। এপ হয় ফাস্ট।

রুম লাইব্রেরী মডেল ক্লাস ব্যবহার করে ডাটাবেজ তৈরি করে, যার ফলে এক মডেল ক্লাস দিয়ে আমরা রিসাইকেলারে ডাটা লোড + ডাটাবেজ তৈরি দুইটি কাজই করতে পারি। মডেল ক্লাসের যে ফিল্ড গুলো আমাদের  ডাটাবেজে দরকার নেই সেগুলো আমরা @Ignore এনোটেশন ব্যবহার করে বাদ দিতে পারি।

নিচের ডিপেন্ডেন্সি গুলো এড করি আমাদের নতুন প্রজেক্টে,

 

ক্লায়েন্ট মডেল ক্লাস। উপরের এন্টিটি ট্যাগ ব্যবহার করে আমরা নির্দেশ দিলাম যে এটি একটি টেবিল। টেবলনেইম, কলাম ইনফো এট্রিবিউট গুলো ব্যবহার করা ডিফল্ট। এগুলো ব্যবহার না করলে মডেল ক্লাস অনুসারে টেবিল তৈরি হবে এবং ভেরিয়েবল অনুসারে টেবিলের এন্টিটি শুরু হবে।

গেটার সেটার মেথোড রাখা জরূরী, ডাটা গেট করার জন্যে।

 

বুক মডেল ক্লাস।

ফরেইন কি ব্যবহার করে আমরা ক্লায়েন্ট মডেল ক্লাসের সাথে একটি রিলেশনশিপ স্থাপন করলাম।

এখানে প্যারেন্ট কলাম হচ্ছে ক্লায়েন্ট টেবিলের আইডি এবং চাইল্ড কলাম হবে বুক টেবিলে থাকা ক্লায়েন্ট আইডির কলাম টি। ক্যাসকেড দিয়ে আমরা বুক টেবিলের ডিলেটের কাজটি করেছি। ক্লায়েন্ট টেবিল থেকে কোন ক্লায়েন্ট ডিলিট হলে তার সব গুলো বুক টেবিলের ডাটাও ডিলেট হবে। ক্লায়েন্ট নাই তাই তার বুক ডাটাবেজে না থাকাই স্বাভাবিক 🙂

recyclerview তে ডাটা লোড করার জন্যে ক্লায়েন্ট এবং বুক মডেলের কম্বিনেশন।

DAO (Data Access Object)

ডাটাবেজ থেকে সকল ধরণের ডাটা এক্সেসের কাজ DAO তে করা হবে।

LiveDataএকটি অবজারভেবল ডাটাহোল্ডার। যে একটিভিটি বা ফ্রেগমেন্টের জন্যে ডাটা লাইভডাটা ব্যবহার করে লোড করা হয়, সেই ডাটাতে কোন পরিবর্তন আসলে এটি সাথে সাথে UI আপডেট করে।

DAO ইন্টারফেস বা এবস্ট্রাক্ট ব্যবহার করে তৈরি করা যেতে। See doc for details. :p

 

নিচের কোড ব্যবহার করে আমরা ডাটাবেজের ইন্সটেন্স পেতে পারি। এটি অবশ্যই সিংগ্লেটন প্যাটার্ন হতে হবে।

ডাটা এক্সেস করার জন্যে DAO মেথোড।

 

VIEWMODEL:  

এটি ডাটা লোড করার জন্যে ডাটা প্রস্তুত করে এবং ডাটা ম্যানেজ করে।  একটিভিটি/ ফ্রেগমেন্টের কমিউনিকেশন স্থাপন করে সম্পূর্ণ এপের সাথে।

ডাটা লোড এবং ম্যানেজ করার লজিক গুলো এখানে লিখতে হবে। যেহেতু ডাটাবেজ এক্সেজ মেইন থ্রেডে সম্ভব নয়, তাই এখানে এসিনটাস্ক ব্যবহার করেছি।

 

 

ডাটা ইন্সার্ট করার জন্যে থ্রেড ব্যবহার করতে হয়েছে। যেহেতু ROOM মেইন থ্রেডে ডাটাবেজ এক্সেস রেকোমমেন্ড করেনা বা সাপোর্ট করেনা বলা যায়।

activity_main.xml

recyclerview_row.xml

 

Reference:

  1. https://developer.android.com/training/data-storage/room/index.html

সম্পূর্ণ প্রজেক্টি পাওয়া যাবে এই লিংকে। সবাই স্টার দিয়ে প্রজেক্টিকে সাপোর্ট করবেন 🙂

Click here

Leave a Reply

Your email address will not be published.

seventeen − sixteen =