সরাসরি প্রধান সামগ্রীতে চলে যান

Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেশন গাইড

Introduction

এই ভিডিওতে জেনস শাউডার (Jens Schauder) আলোচনা করেছেন কীভাবে একটি প্রজেক্টকে Spring Data JPA থেকে Spring Data JDBC-তে মাইগ্রেট করা যায়। সেশনটি মূলত শুরু হয়েছে মাইগ্রেশনের পেছনে থাকা 'কেন' (Why) এবং এর জন্য প্রয়োজনীয় মানসিক প্রস্তুতি নিয়ে। বক্তা এখানে সরাসরি কোড পরিবর্তনের আগে আর্কিটেকচারাল পরিবর্তনের ওপর বেশি জোর দিয়েছেন।


১. মাইগ্রেশনের প্রেক্ষাপট এবং উদ্দেশ্য (Introduction & Motivation)

ভিডিওর শুরুতে বক্তা দর্শকদের জিজ্ঞেস করেন তারা কেন মাইগ্রেশন করতে চান। সাধারণত ডেভেলপাররা তাদের কোডবেসের ওপর আরও বেশি Control বা নিয়ন্ত্রণ পাওয়ার জন্য এই মাইগ্রেশন করতে চান।

রেফারেন্স: [00:13] - [02:47]

বিস্তারিত আলোচনা: JPA অনেক শক্তিশালী কিন্তু এটি অনেক সময় "Magic" এর মতো কাজ করে, যার ফলে ইন্টারনাল বিষয়গুলো বোঝা কঠিন হয়ে পড়ে। অন্যদিকে Spring Data JDBC অনেক বেশি সিম্পল এবং এটি ডেভেলপারকে ডাটাবেসের সাথে সরাসরি কাজ করার সুযোগ দেয়। বক্তা Spring Data JDBC-কে তার নিজের সন্তানের মতো ভালোবাসেন, তবে এটি যে সবার জন্য বা সব পরিস্থিতির জন্য উপযুক্ত নয়, সেটিও তিনি পরিষ্কার করেছেন।

  • সহজ ব্যাখ্যা: JPA হচ্ছে এমন একটি রোবট যে নিজে নিজেই সব কাজ করে দেয়, কিন্তু মাঝে মাঝে সে এমন কিছু করে যা আপনি চান না। আর JDBC হলো একটি সাধারণ টুল যা আপনি যেভাবে চালাবেন সেভাবেই চলবে।

২. মাইগ্রেশনের আগে প্রস্তুতি: টেস্ট এবং ছোট পদক্ষেপ (Foundations & Baby Steps)

যেকোনো বড় পরিবর্তনের আগে বক্তা দুটি গুরুত্বপূর্ণ বিষয়ের কথা বলেছেন:

  • শক্তিশালী টেস্ট স্যুট (Test Suite): যদি আপনার টেস্টগুলো আপনাকে নিশ্চিত করতে না পারে যে কোড ঠিক আছে, তবে মাইগ্রেশন শুরু করবেন না।

  • বেবি স্টেপস (Baby Steps): খুব ছোট ছোট পরিবর্তন করা এবং প্রতিবার টেস্ট রান করা।

রেফারেন্স: [04:41] - [07:14]

বিস্তারিত আলোচনা: বড় কোনো পরিবর্তন একবারে করতে গেলে কোড ভেঙে যাওয়ার ভয় থাকে। বক্তা এখানে "Baby Steps" বা ছোট ছোট কদমে আগানোর পরামর্শ দিয়েছেন। আপনি যদি দুই সপ্তাহ ধরে শুধু কোড পরিবর্তন করেন এবং একবারও রান না করেন, তবে শেষে গিয়ে সব ঠিক করা অসম্ভব হয়ে পড়বে।

  • সহজ ব্যাখ্যা: "Baby Steps" মানে হলো একটি করে ছোট কাজ শেষ করা, সেটি পরীক্ষা করে দেখা যে সব ঠিক আছে কিনা, তারপর পরের কাজে হাত দেওয়া।

৩. মিকাডো মেথড (The Mikado Method)

মাইগ্রেশনের মতো জটিল কাজ সহজে করার জন্য বক্তা Mikado Method-এর কথা বলেছেন।

রেফারেন্স: [07:14] - [10:15]

বিস্তারিত আলোচনা: এটি একটি গ্রাফিক্যাল পদ্ধতি। আপনি আপনার মূল লক্ষ্যটি একটি কাগজে লিখবেন, তারপর সেটি অর্জনের জন্য কী কী ছোট ছোট কাজ করতে হবে তা তীরের (arrow) মাধ্যমে যুক্ত করবেন। যদি কোনো ছোট কাজ করতে গিয়ে দেখেন অন্য কিছু ভেঙে যাচ্ছে, তবে সেই কাজটা আগে সার্কেল করে লিখে নিবেন। এতে আপনার কাজের একটি পরিষ্কার ম্যাপ তৈরি হয়।

  • কঠিন শব্দ: Mikado Method — এটি একটি কৌশল যা বড় রিফ্যাক্টরিং (Refactoring) বা কোড পরিবর্তনের কাজকে ছোট ছোট ভাগে ভাগ করে গুছিয়ে করতে সাহায্য করে।

৪. এগ্রিগেট এবং ডোমেইন ড্রিভেন ডিজাইন (Aggregates & DDD)

Spring Data JDBC-এর মূল ভিত্তি হলো Aggregates। মাইগ্রেশনের আগে এই ধারণাটি বোঝা অত্যন্ত জরুরি।

রেফারেন্স: [10:25] - [13:01]

বিস্তারিত আলোচনা: এগ্রিগেট হলো কতগুলো ক্লাসের একটি গ্রুপ যা একসাথে একটি ইউনিট হিসেবে কাজ করে। এর একটি Aggregate Root থাকে, যার মাধ্যমে বাইরের সবাই যোগাযোগ করে। JPA-তে আমরা অনেক সময় এলোমেলোভাবে এক টেবিলের সাথে অন্য টেবিলের সম্পর্ক তৈরি করি, কিন্তু JDBC-তে আপনাকে পরিষ্কারভাবে সীমানা (Boundary) নির্ধারণ করতে হবে।

  • সহজ ব্যাখ্যা: মনে করুন একটি "অর্ডার" (Order) আর তার "আইটেমগুলো" (Items)। এখানে অর্ডার হলো প্রধান বা রুট। আইটেমগুলো অর্ডারের অংশ, তাই এদের আলাদা কোনো অস্তিত্ব নেই। এই পুরো সেটটিই হলো একটি এগ্রিগেট।

এনালাইসিস এবং আমার ভাবনা

ভিডিওর এই অংশটি থেকে বোঝা যায় যে, মাইগ্রেশন কেবল একটি লাইব্রেরি পাল্টানো নয়, এটি আসলে আপনার চিন্তাভাবনা এবং সফটওয়্যার ডিজাইন পাল্টানোর বিষয়।

সম্ভাবনা ও বাস্তবতা:

  • বাস্তবতা: JPA থেকে JDBC-তে যাওয়া অনেক পরিশ্রমের কাজ। যদি আপনার প্রজেক্ট অনেক বড় হয়, তবে পুরোটা একসাথে না করে নতুন মডিউলগুলো JDBC-তে করার চেষ্টা করা বুদ্ধিমানের কাজ হবে।

  • বিকল্প: আপনার যদি JPA-তে পারফরম্যান্স ইস্যু না থাকে এবং কোড মেইনটেইন করা সহজ মনে হয়, তবে শুধু ট্রেন্ড অনুসরণ করার জন্য মাইগ্রেশন না করাই ভালো।

  • পরামর্শ: বক্তা যেমন বলেছেন, আগে নিজের ডোমেইন মডেলকে পরিষ্কার করুন। এগ্রিগেটগুলো চিহ্নিত করুন। এই কাজগুলো আপনি JPA-তে থেকেও করতে পারেন, যা আপনার কোডের মান এমনিতেই বাড়িয়ে দেবে।

উপসংহার: এই ৪ মিনিট ৪১ সেকেন্ডের আলোচনায় টেকনিক্যাল কোডিংয়ের চেয়ে স্ট্র্যাটেজি এবং আর্কিটেকচারের ওপর বেশি গুরুত্ব দেওয়া হয়েছে, যা একজন বিগিনারের জন্য মাইগ্রেশনের রোডম্যাপ বুঝতে সহায়ক।

[

Migrating from (Spring Data) JPA to Spring Data JDBC by Jens Schauder @ Spring I/O 2024

Spring I/O · 27K views

](http://www.youtube.com/watch?v=WYa9n0F4CRM)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...