ভূমিকা (Introduction)
এই ভিডিওতে আমরা একটি কুইজ অ্যাপ্লিকেশন তৈরির পরবর্তী ধাপগুলো শিখব। মূলত এখানে দেখানো হয়েছে কীভাবে ডাটাবেস থেকে নির্দিষ্ট ক্যাটাগরি (যেমন: Java, Python) অনুযায়ী প্রশ্ন খুঁজে বের করা যায় এবং কীভাবে নতুন প্রশ্ন সিস্টেমে যোগ (Add) করা যায়। এটি একটি Microservices Tutorial সিরিজের অংশ, যেখানে Spring Boot এবং Spring Data JPA ব্যবহার করে ব্যাকএন্ডের কাজগুলো সহজ করা হয়েছে।
পার্ট ১: ক্যাটাগরি অনুযায়ী প্রশ্ন খোঁজা (Fetching Questions by Category)
আগের পর্বে আমরা সব প্রশ্ন একসাথে আনা শিখেছিলাম। কিন্তু বাস্তবে আমাদের হয়তো শুধু 'Java' বা 'Python'-এর প্রশ্ন দরকার হতে পারে।
রেফারেন্স: ভিডিওর শুরু থেকে ০৫:৫০ পর্যন্ত দেখুন
বিস্তারিত আলোচনা: ১. Controller-এ পরিবর্তন: আমরা একটি নতুন মেথড তৈরি করি যা ইউজার থেকে একটি 'Category' ইনপুট নেবে। ২. Path Variable: ব্রাউজারের লিঙ্কে (URL) যখন আমরা কোনো মান পাঠাই (যেমন: /question/category/java), তখন সেই 'java' শব্দটিকে কোডে ধরার জন্য @PathVariable অ্যানোটেশন ব্যবহার করা হয়। ৩. JPA Magic: মজার ব্যাপার হলো, আমাদের ডাটাবেসের জন্য কোনো কঠিন কুয়েরি (Query) লিখতে হয়নি। QuestionDao ইন্টারফেসে শুধু findByCategory নামে একটি মেথড লিখলেই Spring Data JPA নিজে থেকেই বুঝে নেয় যে তাকে 'category' কলামে সার্চ করতে হবে।
সহজ ব্যাখ্যা: * Path Variable: এটি একটি ঠিকানার মতো। মনে করুন আপনি একটি লাইব্রেরিতে গিয়ে বললেন "আমাকে বিজ্ঞানের বই দিন"। এখানে 'বিজ্ঞান' হলো পাথ ভেরিয়েবল।
পার্ট ২: নতুন প্রশ্ন যোগ করা (Adding a New Question)
সিস্টেমে নতুন প্রশ্ন ইনপুট দেওয়ার জন্য আমাদের একটি 'POST' রিকোয়েস্ট তৈরি করতে হবে।
রেফারেন্স: ভিডিওর ০৬:৫০ থেকে ১৫:২০ পর্যন্ত দেখুন
বিস্তারিত আলোচনা: ১. POST Mapping: ডাটাবেসে নতুন কিছু সেভ করার জন্য আমরা @PostMapping ব্যবহার করি। ২. Request Body: যখন ক্লায়েন্ট (যেমন মোবাইল অ্যাপ বা ব্রাউজার) থেকে কোনো ডাটা পাঠানো হয়, তখন সেটি JSON ফরম্যাটে থাকে। এই JSON ডাটাকে জাভা অবজেক্টে রূপান্তর করতে @RequestBody ব্যবহার করা হয়। ৩. Service & DAO: কন্ট্রোলার থেকে ডাটা সার্ভিসে যায়, আর সার্ভিস থেকে questionDao.save(question) মেথড কল করে ডাটাবেসে সেভ করা হয়।
সহজ ব্যাখ্যা:
- JSON: এটি ডাটা আদান-প্রদানের একটি সহজ ভাষা। অনেকটা লিস্টের মতো যেখানে নাম এবং তার মান লেখা থাকে (যেমন: "question": "What is Java?").
কোডিং সেকশন (Coding Snippet)
নিচে ক্যাটাগরি অনুযায়ী প্রশ্ন খোঁজার জন্য কন্ট্রোলারের একটি সহজ উদাহরণ দেওয়া হলো:
Java
// Controller-এর কোড
@GetMapping("category/{category}")
public ResponseEntity<List<Question>> getQuestionsByCategory(@PathVariable String category) {
// সার্ভিসকে বলা হচ্ছে নির্দিষ্ট ক্যাটাগরির প্রশ্ন দিতে
return questionService.getQuestionsByCategory(category);
}
এই কোড দিয়ে আমরা কী পেলাম? এই কোডটি যখনই ব্রাউজারে /question/category/java লিখে সার্চ করা হবে, তখনই ডাটাবেস থেকে শুধু জাভার প্রশ্নগুলো খুঁজে এনে ইউজারের সামনে সুন্দরভাবে সাজিয়ে দেবে।
কঠিন শব্দের সহজ ব্যাখ্যা
১. Annotation (অ্যানোটেশন): এটি জাভাতে @ চিহ্ন দিয়ে শুরু হয়। এটি স্প্রিং বুটকে বলে দেয় যে কোনো একটি ক্লাস বা মেথড কী কাজ করবে। যেমন: @GetMapping মানে এটি ডাটা পড়ার কাজ করবে। ২. JPA (Java Persistence API): এটি একটি টুল যা আমাদের ডাটাবেসের সাথে কথা বলতে সাহায্য করে। আমাদের নিজের হাতে SQL কুয়েরি লিখতে হয় না, এটি নিজেই সব করে দেয়। ৩. Postman: এটি একটি সফটওয়্যার যা দিয়ে আমরা আমাদের তৈরি করা API গুলো চেক করে দেখতে পারি যে সেগুলো ঠিকঠাক কাজ করছে কি না।
বিশ্লেষণ ও বাস্তব ধারণা (Analysis & Thinking)
সৃষ্টিকর্তার উদ্দেশ্য: এই ভিডিওর মাধ্যমে ইন্সট্রাকটর বোঝাতে চেয়েছেন যে, স্প্রিং বুট ব্যবহার করলে ব্যাকএন্ড ডেভেলপমেন্ট কতটা দ্রুত এবং সহজ হতে পারে। বিশেষ করে 'Convention over Configuration' (অর্থাৎ নির্দিষ্ট নিয়ম মেনে চললে কনফিগারেশন কম করতে হয়) বিষয়টি এখানে স্পষ্ট।
বাস্তব প্রেক্ষাপট ও আমার চিন্তা: বাস্তবে যখন আপনি একটি বড় কুইজ অ্যাপ বানাবেন, তখন শুধু ডাটা যোগ বা দেখলেই হবে না। আপনাকে 'Error Handling' বা ভুল হলে কী হবে সেটা নিয়েও ভাবতে হবে। যেমন: যদি কেউ এমন ক্যাটাগরি সার্চ করে যা ডাটাবেসে নেই, তবে যেন একটি সুন্দর মেসেজ দেখায় (যেমন: "No questions found")।
বিকল্প ও পরামর্শ:
-
ভাল বিকল্প: ডাটাবেসে ডাটা যোগ করার সময় সরাসরি ID না দিয়ে 'Auto-increment' বা 'Identity' ব্যবহার করা উচিত, যা ভিডিওতে দেখানো হয়েছে। এতে ডুপ্লিকেট ID হওয়ার ভয় থাকে না।
-
পরামর্শ: আপনি চাইলে আরও দুটি ফিচার যোগ করতে পারেন—Update (পুরানো প্রশ্ন ঠিক করা) এবং Delete (ভুল প্রশ্ন মুছে ফেলা)। স্প্রিং বুটে এগুলো করাও প্রায় একই রকম সহজ।
পরবর্তী পদক্ষেপ: আগামী পর্বে 'Exception Handling' বা ত্রুটি মোকাবিলা করার উপায় নিয়ে কাজ করা হবে, যা একটি প্রফেশনাল অ্যাপের জন্য খুবই জরুরি।
[
Quiz App Using Spring Boot #3 | Microservices Tutorial
Telusko · 42K views
](http://www.youtube.com/watch?v=aoAdMc7-XBQ)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d