Ember Data হল Ember.js এর জন্য একটি শক্তিশালী এবং মৌলিক লাইব্রেরি, যা অ্যাপ্লিকেশন ডেটা ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি মূলত ডেটার লোডিং, সিঙ্ক্রোনাইজেশন, এবং স্টোরেজের সাথে সম্পর্কিত কাজগুলো সহজ করে তোলে। Ember Data বিভিন্ন Model, Adapter, এবং Serializer এর মাধ্যমে ডেটা পরিচালনা করে, যা API এবং ডেটাবেসের সাথে ইন্টিগ্রেশন সহজ করে তোলে।
এমবারজেএস-এর Ember Data-র মাধ্যমে, অ্যাপ্লিকেশন সহজে ডেটা ফেচ, স্টোর, এবং আপডেট করতে পারে। এটি JSON:API এবং অন্যান্য RESTful API এর সাথে কাজ করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
Ember Data এর মূল উপাদান
Ember Data প্রধানত তিনটি মূল উপাদান নিয়ে কাজ করে:
- Model: এটি অ্যাপ্লিকেশনের ডেটার কাঠামো সংজ্ঞায়িত করে।
- Adapter: API থেকে ডেটা ফেচ করার জন্য ব্যবহৃত হয়। এটি API এর প্রকার অনুযায়ী কাস্টমাইজ করা যায় (যেমন REST, JSON:API)।
- Serializer: ডেটার কনভার্সন এবং ফর্ম্যাটিং পরিচালনা করে, যাতে ডেটা সঠিকভাবে API এর মাধ্যমে পাঠানো এবং গ্রহণ করা যায়।
1. Model - মডেল
Ember Data-তে Model হল ডেটার কাঠামো যা মডেল ডেটার জন্য attributes (ফিল্ড) এবং relationships (সম্পর্ক) সংজ্ঞায়িত করে। Model তৈরি করতে ember generate model কমান্ড ব্যবহার করা হয়।
উদাহরণ: Model তৈরি
ধরা যাক, আমাদের একটি Post মডেল এবং একটি Comment মডেল আছে, যেখানে প্রতিটি পোস্টের অনেক মন্তব্য থাকে। এখানে Post মডেলটি hasMany সম্পর্কিত এবং Comment মডেলটি belongsTo সম্পর্কিত।
Post মডেল:
// app/models/post.js import Model, { attr, hasMany } from '@ember-data/model'; export default class PostModel extends Model { @attr('string') title; @attr('string') content; @hasMany('comment') comments; // পোস্টের সাথে সম্পর্কিত মন্তব্য }Comment মডেল:
// app/models/comment.js import Model, { attr, belongsTo } from '@ember-data/model'; export default class CommentModel extends Model { @attr('string') content; @belongsTo('post') post; // মন্তব্যটি একটি পোস্টের সাথে সম্পর্কিত }
এখানে, Post মডেলটি hasMany('comment') ব্যবহার করে অনেক মন্তব্যের সাথে সম্পর্কিত এবং Comment মডেলটি belongsTo('post') ব্যবহার করে একটি পোস্টের সাথে সম্পর্কিত।
2. Adapter - অ্যাডাপ্টার
Ember Data-তে Adapter হল API এর সাথে ডেটা লোড এবং সিঙ্ক্রোনাইজ করার জন্য ব্যবহৃত কাস্টমাইজড কোড। এটি বিভিন্ন API প্রকার (যেমন RESTful API, JSON:API) অনুযায়ী কাজ করতে পারে।
Default Adapter (JSON:API)
যেহেতু Ember Data ডিফল্টভাবে JSON:API ফরম্যাটের সাথে কাজ করে, তাই সাধারণভাবে application/adapter.js ফাইলটি কনফিগার করা হয়:
// app/adapters/application.js
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default class ApplicationAdapter extends JSONAPIAdapter {
// API থেকে ডেটা ফেচ করার জন্য কাস্টম কনফিগারেশন যোগ করা যাবে এখানে
}
এটি JSON:API ফরম্যাটে ডেটা সাপোর্ট করে এবং API এর মাধ্যমে ডেটা পাঠানো এবং গ্রহণ করা সহজ করে।
REST Adapter
আপনি যদি RESTful API ব্যবহার করতে চান, তবে RESTAdapter ব্যবহার করতে পারেন:
// app/adapters/application.js
import RESTAdapter from '@ember-data/adapter/rest';
export default class ApplicationAdapter extends RESTAdapter {
// REST API কনফিগারেশন
}
এটি REST API এর জন্য কাস্টমাইজড ডেটা ফরম্যাট সাপোর্ট করবে।
3. Serializer - সিরিয়ালাইজার
Serializer হল Ember Data-এর একটি অংশ যা ডেটা কনভার্সন এবং ফরম্যাটিং পরিচালনা করে। এটি মূলত ডেটা পাঠানো এবং গ্রহণ করার সময় সঠিকভাবে ডেটা ফরম্যাট করে।
Default Serializer
ডিফল্টভাবে, Ember Data JSONAPISerializer ব্যবহার করে, যা JSON:API ফরম্যাট অনুযায়ী ডেটা রূপান্তর করে:
// app/serializers/application.js
import JSONAPISerializer from '@ember-data/serializer/json-api';
export default class ApplicationSerializer extends JSONAPISerializer {
// এখানে অতিরিক্ত কাস্টম সিরিয়ালাইজেশন বা ডেটা রূপান্তর যোগ করা যাবে
}
কাস্টম Serializer তৈরি করা
যদি আপনি একটি কাস্টম সিরিয়ালাইজার তৈরি করতে চান, যেটি ডেটা ফরম্যাটের জন্য আলাদা আচরণ করবে, তাহলে নিম্নলিখিত কোডে এটি করতে পারেন:
// app/serializers/post.js
import JSONAPISerializer from '@ember-data/serializer/json-api';
export default class PostSerializer extends JSONAPISerializer {
normalizeResponse(store, primaryModelClass, payload, id, requestType) {
// কাস্টম রেসপন্স প্রসেসিং
payload.data.attributes.title = payload.data.attributes.title.toUpperCase();
return super.normalizeResponse(store, primaryModelClass, payload, id, requestType);
}
}
এখানে, PostSerializer ডেটার title ফিল্ডটিকে ক্যাপিটালাইজড করতে কাস্টম লজিক যোগ করেছে।
Ember Data এর মাধ্যমে ডেটা হ্যান্ডলিং
Ember Data দিয়ে ডেটা হ্যান্ডলিং খুবই সহজ এবং কার্যকরী। এটি আপনাকে create, read, update, এবং delete (CRUD) অপারেশনগুলো খুব দ্রুত এবং দক্ষভাবে পরিচালনা করতে সাহায্য করে।
1. ডেটা ফেচ করা (Read)
ডেটা ফেচ করতে আপনি store.findAll() অথবা store.findRecord() ব্যবহার করতে পারেন।
// সমস্ত পোস্ট ফেচ করা
let posts = await this.store.findAll('post');
// একটি নির্দিষ্ট পোস্ট ফেচ করা
let post = await this.store.findRecord('post', 1);
2. নতুন ডেটা তৈরি করা (Create)
নতুন ডেটা তৈরি করতে store.createRecord() ব্যবহার করুন:
let newPost = this.store.createRecord('post', {
title: 'New Post',
content: 'This is a new post content.'
});
newPost.save(); // ডেটা সেভ করা
3. ডেটা আপডেট করা (Update)
একটি মডেল আপডেট করতে, প্রথমে মডেলটি ফেচ করুন এবং তারপর সেটির প্রপার্টি পরিবর্তন করে সেভ করুন:
let post = await this.store.findRecord('post', 1);
post.set('title', 'Updated Post Title');
post.save(); // আপডেট সেভ করা
4. ডেটা মুছে ফেলা (Delete)
একটি রেকর্ড মুছে ফেলতে deleteRecord() এবং save() ব্যবহার করুন:
let post = await this.store.findRecord('post', 1);
post.deleteRecord(); // রেকর্ড মুছে ফেলা
post.save(); // পরিবর্তন সেভ করা
Ember Data ডেটা ম্যানেজমেন্টের জন্য একটি শক্তিশালী সিস্টেম সরবরাহ করে, যা মডেল সম্পর্ক, API ইন্টিগ্রেশন, এবং ডেটা লোডিং সহজ এবং কার্যকর করে তোলে। Model, Adapter, এবং Serializer এর মাধ্যমে, Ember.js অ্যাপ্লিকেশনের ডেটা পরিচালনা অনেক সহজ হয়ে যায় এবং JSON:API বা RESTful API সহ কাজ করার জন্য এটি খুবই উপযোগী। CRUD অপারেশন, relationship management, এবং custom serialization এর সুবিধা দিয়ে, Ember Data অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও দ্রুত এবং সঠিকভাবে পরিচালনা করতে সাহায্য করে।
Read more