Introduction
এই ভিডিওতে আমরা শিখব কীভাবে Spring Boot ব্যবহার করে একটি Quiz Application তৈরি করা যায়। কন্টেন্ট ক্রিয়েটর এখানে সরাসরি মাইক্রোসার্ভিস (Microservices) শুরু না করে প্রথমে একটি মনোলিথিক (Monolithic) অ্যাপ্লিকেশন তৈরি করার পরিকল্পনা করেছেন। সহজ কথায় বললে, আগে পুরো অ্যাপটা একসাথেই বানানো হবে, তারপর সেটাকে ছোট ছোট ভাগে (Microservices) ভাগ করা শিখবো। এই পর্বে মূলত প্রজেক্টের সেটআপ, ডাটাবেস কানেকশন এবং একটি বেসিক কন্ট্রোলার তৈরি করা দেখানো হয়েছে।
কুইজ অ্যাপ্লিকেশনের ধারণা ও প্রজেক্ট সেটআপ
এই অংশটি ভিডিওর শুরুতে [00:00] থেকে [02:16] পর্যন্ত আলোচনা করা হয়েছে।
রেফারেন্স: ভিডিও লিংক
বিস্তারিত: কুইজ অ্যাপটি এমন হবে যেখানে ইউজার কিছু প্রশ্ন (MCQ) পাবে এবং সেগুলো উত্তর দেওয়ার পর তার স্কোর দেখতে পারবে। এই অ্যাপের জন্য ডাটাবেস হিসেবে PostgreSQL ব্যবহার করা হয়েছে।
-
Monolithic Application (মনোলিথিক অ্যাপ্লিকেশন): যখন একটি সফটওয়্যারের সব কাজ (যেমন: ইউজার ম্যানেজমেন্ট, প্রশ্ন ম্যানেজমেন্ট, কুইজ লজিক) একটাই কোডবেসের মধ্যে থাকে, তখন তাকে মনোলিথিক বলে। এটি শুরুতে শেখার জন্য সহজ।
-
Microservices (মাইক্রোসার্ভিস): যখন বড় একটি অ্যাপকে ছোট ছোট স্বাধীন ভাগে ভাগ করা হয়। যেমন: প্রশ্নের জন্য আলাদা সার্ভিস, কুইজের জন্য আলাদা সার্ভিস।
স্প্রিং ইনিশিয়ালাইজার (Spring Initializr) দিয়ে প্রজেক্ট তৈরি
ভিডিওর এই অংশে [02:17] থেকে [04:47] পর্যন্ত প্রজেক্ট তৈরির ধাপগুলো দেখানো হয়েছে।
রেফারেন্স: ভিডিও লিংক
প্রজেক্ট তৈরির জন্য start.spring.io ওয়েবসাইটটি ব্যবহার করা হয়েছে। সেখানে নিচের অপশনগুলো সিলেক্ট করা হয়েছে:
-
Project: Maven
-
Language: Java (Version 17)
-
Spring Boot Version: 3.1
-
Dependencies: * Spring Web: ওয়েব অ্যাপ্লিকেশন বা REST API বানানোর জন্য।
-
PostgreSQL Driver: ডাটাবেসের সাথে কানেক্ট করার জন্য।
-
Spring Data JPA: ডাটাবেসের কাজগুলো কোডের মাধ্যমে সহজে করার জন্য।
-
Lombok: কোড ছোট রাখার জন্য (যেমন: Getter, Setter অটোমেটিক জেনারেট করা)।
-
ডাটাবেস এবং টেবিল কনফিগারেশন
ভিডিওর [04:48] থেকে [07:08] অংশে ডাটাবেস সেটআপ দেখানো হয়েছে।
রেফারেন্স: ভিডিও লিংক
এখানে PGAdmin ব্যবহার করে PostgreSQL ডাটাবেসে question নামে একটি টেবিল আগে থেকেই তৈরি করা ছিল। টেবিলটিতে নিচের কলামগুলো আছে:
-
id: প্রতিটি প্রশ্নের ইউনিক নাম্বার (Primary Key)। -
category: প্রশ্নটি কোন বিষয়ের (যেমন: Java, Python)। -
difficulty_level: প্রশ্নটি সহজ না কঠিন। -
question_title: মূল প্রশ্ন। -
option1, option2, option3, option4: চারটি উত্তর। -
right_answer: সঠিক উত্তরটি কী।
কোডিং এবং প্রথম API তৈরি
ভিডিওর শেষ অংশে [07:09] থেকে শেষ পর্যন্ত কোড লিখে একটি টেস্ট API বানানো হয়েছে।
রেফারেন্স: ভিডিও লিংক
প্রজেক্টটি রান করার জন্য application.properties ফাইলে ডাটাবেস কনফিগারেশন করতে হয়েছে।
কোড উদাহরণ (Application Properties):
Properties
spring.datasource.url=jdbc:postgresql://localhost:5432/questionDB
spring.datasource.username=postgres
spring.datasource.password=0000
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
ব্যাখ্যা: এই কোডটি আপনার স্প্রিং বুট অ্যাপকে বলছে যে ডাটাবেস কোথায় আছে, ইউজারনেম আর পাসওয়ার্ড কী এবং কোন ধরণের ডাটাবেস (PostgreSQL) ব্যবহার করা হচ্ছে।
কোড উদাহরণ (Question Controller):
Java
@RestController
@RequestMapping("question")
public class QuestionController {
@GetMapping("allQuestions")
public String getAllQuestions() {
return "Hi, these are your questions";
}
}
ব্যাখ্যা: * @RestController: এটি দিয়ে বোঝানো হয় এই ক্লাসটি ব্রাউজার বা অ্যাপের রিকোয়েস্ট হ্যান্ডেল করবে।
-
@RequestMapping("question"): এর মানে হলো ব্রাউজারেlocalhost:8080/questionলিখে সার্চ দিতে হবে। -
@GetMapping("allQuestions"): এর মাধ্যমে আমরা একটি নির্দিষ্ট পথ (path) তৈরি করলাম। অর্থাৎlocalhost:8080/question/allQuestionsলিংকে গেলে "Hi, these are your questions" লেখাটি দেখা যাবে।
কঠিন শব্দ এবং সেগুলোর সহজ অর্থ
-
Dependencies (ডিপেন্ডেন্সি): আপনার প্রজেক্ট চালানোর জন্য বাইরে থেকে যে লাইব্রেরি বা সাহায্যকারী কোডগুলো দরকার হয়।
-
Controller (কন্ট্রোলার): এটি অনেকটা ট্রাফিক পুলিশের মতো। ব্রাউজার থেকে কোনো রিকোয়েস্ট আসলে সেটা কোথায় যাবে এবং কী উত্তর দিবে তা কন্ট্রোলার ঠিক করে।
-
Dialect (ডায়ালেক্ট): একেক ডাটাবেস একেক ভাষায় কথা বলে। হাইবারনেট (Hibernate) যাতে PostgreSQL-এর ভাষা বুঝতে পারে, সেজন্য ডায়ালেক্ট ব্যবহার করা হয়।
এনালাইসিস এবং আমার ভাবনা
মূল উদ্দেশ্য: কন্টেন্ট ক্রিয়েটর চাচ্ছেন দর্শকদের একদম শুরু থেকে একটি প্রজেক্ট হাতে-কলমে শিখাতে। সরাসরি ডাটাবেস থেকে ডাটা আনার আগে একটি "টেক্সট" আউটপুট দিয়ে চেক করা ভালো অভ্যাস যাতে বোঝা যায় প্রজেক্ট ঠিকমতো রান করছে কি না।
বাস্তবতা ও পরামর্শ:
-
লমবোক (Lombok) সমস্যা: ভিডিওতে একটি এরর দেখা গিয়েছিল যে লমবোক কাজ করছে না। যারা নতুন শিখছেন, তারা চাইলে শুরুতে লমবোক বাদ দিয়ে ম্যানুয়ালি Getter/Setter ব্যবহার করতে পারেন, এতে অনেক কনফিগারেশন ঝামেলা কমে যায়।
-
বিকল্প: আপনি যদি PostgreSQL সেটআপ করতে ঝামেলা মনে করেন, তবে প্র্যাকটিসের জন্য H2 Database (ইন-মেমোরি ডাটাবেস) ব্যবহার করতে পারেন, যাতে কোনো আলাদা সফটওয়্যার ইন্সটল করতে হয় না।
-
পরবর্তী ধাপ: পরবর্তী ভিডিওগুলোতে ডাটাবেস থেকে ডাটা এনে JSON ফরম্যাটে দেখানোর সম্ভাবনা আছে, যা রিয়েল-লাইফ অ্যাপের জন্য খুব জরুরি।
[
Quiz App Using Spring Boot #1 | Microservices Tutorial
Telusko · 97K views
](http://www.youtube.com/watch?v=zFGh_Jh-Hvs)

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