NHibernate-এ Auto Mapping এবং Override Techniques খুবই শক্তিশালী কৌশল যা আপনাকে ORM (Object-Relational Mapping) মডেল তৈরি করতে সাহায্য করে। এই দুটি পদ্ধতি ব্যবহার করে, আপনি সহজেই ক্লাস এবং ডেটাবেস টেবিলের মধ্যে ম্যাপিং তৈরি করতে পারেন এবং প্রয়োজন অনুযায়ী কাস্টমাইজেশন করতে পারেন।
Auto Mapping
Auto Mapping একটি প্রক্রিয়া যা NHibernate কে ক্লাস এবং ডেটাবেস টেবিলের মধ্যে স্বয়ংক্রিয়ভাবে ম্যাপিং করতে নির্দেশ দেয়। এর মাধ্যমে, আপনি একটি ক্লাস তৈরি করে সেই ক্লাসের সমস্ত প্রপার্টি এবং সম্পর্ক ডেটাবেস টেবিলের সাথে স্বয়ংক্রিয়ভাবে ম্যাপ করতে পারেন। NHibernate Auto Mapping আপনাকে খুব কম কনফিগারেশন ও কোডে ম্যাপিং সম্পন্ন করতে দেয়, যা ডেভেলপারদের জন্য একটি বড় সুবিধা।
Auto Mapping ব্যবহার করার উদাহরণ
ধরা যাক, আমাদের একটি Employee ক্লাস রয়েছে এবং আমরা চাই এই ক্লাসটিকে ডেটাবেস টেবিলের সাথে স্বয়ংক্রিয়ভাবে ম্যাপ করতে।
public class Employee
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Position { get; set; }
public virtual DateTime HireDate { get; set; }
}
এখন, আপনি Auto Mapping কনফিগারেশন ব্যবহার করতে পারেন:
var configuration = new Configuration();
configuration.Configure(); // Hibernate.cfg.xml ফাইলের কনফিগারেশন লোড করবে
var mapper = new AutoMappingConfiguration();
var sessionFactory = configuration.BuildSessionFactory();
var session = sessionFactory.OpenSession();
এখানে, NHibernate স্বয়ংক্রিয়ভাবে Employee ক্লাসটি ডেটাবেস টেবিলের সাথে ম্যাপ করবে এবং আপনাকে ম্যানুয়ালি Mapping XML ফাইল বা Fluent API ব্যবহার করার দরকার হবে না।
Auto Mapping এর সুবিধা:
- সহজতা: Auto Mapping আপনাকে কম কনফিগারেশন এবং কোডে ম্যাপিং করতে দেয়।
- দ্রুত উন্নয়ন: আপনাকে Mapping ফাইল বা Fluent API দিয়ে সময় নষ্ট করতে হয় না।
- Maintenance: মডেল পরিবর্তন করলে NHibernate স্বয়ংক্রিয়ভাবে সবকিছু আপডেট করে, যা মেইনটেনেন্সের কাজ সহজ করে তোলে।
Override Techniques
যখন আপনি Auto Mapping ব্যবহার করেন, তখন NHibernate কিছু ক্ষেত্রে স্বয়ংক্রিয়ভাবে ক্লাসের প্রপার্টি এবং সম্পর্ক ম্যাপ করে দেয়। তবে, কিছু বিশেষ কেসে আপনাকে Override Techniques ব্যবহার করে কাস্টম ম্যাপিং করতে হতে পারে। এই কৌশলের মাধ্যমে, আপনি ক্লাসের প্রপার্টি বা টেবিলের সম্পর্ক কাস্টমাইজ করতে পারেন।
Override Techniques সাধারণত Property Override এবং Class Override এর মাধ্যমে করা হয়, যেখানে আপনি একাধিক প্রপার্টি বা ক্লাসের ম্যাপিং কাস্টমাইজ করতে পারেন।
1. Property Override
ধরা যাক, আমাদের Employee ক্লাসে একটি Salary প্রপার্টি রয়েছে, এবং আমরা চাই এই প্রপার্টিটিকে ডেটাবেসে একটি আলাদা নামের কলামে ম্যাপ করতে।
public class Employee
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Position { get; set; }
public virtual decimal Salary { get; set; }
}
এখন, আপনি Auto Mapping কনফিগারেশনের মধ্যে Salary প্রপার্টি কাস্টমাইজ করতে পারেন:
AutoMap.AssemblyOf<Employee>()
.Override<Employee>(map => map.Property(x => x.Salary).Column("AnnualSalary"));
এখানে, আমরা Salary প্রপার্টিকে ডেটাবেসের AnnualSalary নামক কলামের সাথে ম্যাপ করেছি।
2. Class Override
এখন, ধরুন আমরা চাই Employee ক্লাসের জন্য একটি কাস্টম টেবিল নাম নির্ধারণ করতে। এর জন্য আমরা ক্লাস লেভেলে Override ব্যবহার করতে পারি:
AutoMap.AssemblyOf<Employee>()
.Override<Employee>(map => map.Table("EmployeesTable"));
এখানে, Employee ক্লাসের জন্য ডেটাবেস টেবিলের নাম EmployeesTable নির্ধারণ করা হয়েছে।
Override Techniques এর সুবিধা:
- Customizability: আপনি যখন Auto Mapping ব্যবহার করেন, তখন কিছু কাস্টম ফিচার বা স্পেশাল ম্যাপিং করতে Override Techniques ব্যবহার করতে পারেন।
- Flexibility: যদি আপনার ডেটাবেসের কাঠামো বিশেষ ধরনের হয়, তবে আপনি Override Techniques দিয়ে অতিরিক্ত কাস্টমাইজেশন করতে পারবেন।
- Refinement: যখন সাধারণ Auto Mapping আপনার প্রয়োজনীয়তার সঙ্গে পুরোপুরি মিলে না, তখন Override Techniques এর মাধ্যমে আরো নির্দিষ্ট পরিবর্তন করা যায়।
Auto Mapping এবং Override Techniques একসাথে ব্যবহার
আপনি Auto Mapping এর সুবিধা নিতে পারেন এবং Override Techniques ব্যবহার করে প্রয়োজনীয় কাস্টমাইজেশন করতে পারেন। উদাহরণস্বরূপ:
var sessionFactory = new Configuration()
.Configure()
.AddAssembly("YourAssemblyName")
.BuildSessionFactory();
var mapper = AutoMap.AssemblyOf<Employee>()
.Override<Employee>(map => map.Property(x => x.Salary).Column("AnnualSalary"))
.BuildMapping();
এখানে, Auto Mapping স্বয়ংক্রিয়ভাবে সব প্রপার্টি এবং ক্লাস ম্যাপ করবে এবং আমরা Override ব্যবহার করে Salary প্রপার্টির জন্য কলাম নাম কাস্টমাইজ করেছি।
উপসংহার
Auto Mapping এবং Override Techniques দুটি অত্যন্ত গুরুত্বপূর্ণ কৌশল যা NHibernate ব্যবহারকারীদের জন্য অত্যন্ত সহায়ক। Auto Mapping আপনাকে দ্রুত ORM মডেল তৈরি করতে সাহায্য করে, এবং Override Techniques ব্যবহার করে আপনি ডেটাবেস টেবিল এবং ক্লাসের মধ্যে সম্পর্ক এবং প্রপার্টি কাস্টমাইজ করতে পারেন। একসাথে এই দুটি কৌশল ব্যবহার করলে আপনি একটি নমনীয়, ইফিশিয়েন্ট এবং মেইনটেনেবল ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more