Microsoft Technologies ASP.NET Application এ NHibernate কনফিগার করা গাইড ও নোট

351

ASP.NET অ্যাপ্লিকেশনে NHibernate কনফিগার করার জন্য কয়েকটি ধাপ অনুসরণ করতে হয়। NHibernate একটি শক্তিশালী ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক, যা ডেটাবেসের সাথে যোগাযোগের জন্য সহজ ও কার্যকর উপায় প্রদান করে। নিচে ASP.NET অ্যাপ্লিকেশনকে NHibernate এর সাথে কনফিগার করার পদ্ধতি বিস্তারিতভাবে আলোচনা করা হচ্ছে।


১. NHibernate NuGet প্যাকেজ ইনস্টল করা

প্রথমেই আপনাকে NHibernate এবং এর প্রয়োজনীয় প্যাকেজ ইনস্টল করতে হবে। এর জন্য আপনি NuGet প্যাকেজ ম্যানেজার ব্যবহার করতে পারেন।

NHibernate ইনস্টল

Visual Studio তে NuGet প্যাকেজ ম্যানেজার ব্যবহার করে NHibernate ইনস্টল করতে পারেন:

  1. NuGet Package Manager এ গিয়ে Install-Package NHibernate কমান্ড চালান।

অথবা:

  • Tools > NuGet Package Manager > Package Manager Console > টাইপ করুন:
Install-Package NHibernate

এটি NHibernate এবং এর প্রয়োজনীয় ডিপেন্ডেন্সি প্যাকেজগুলো আপনার প্রজেক্টে ইনস্টল করবে।


২. NHibernate কনফিগারেশন ফাইল তৈরি করা

NHibernate কনফিগার করার জন্য একটি hibernate.cfg.xml কনফিগারেশন ফাইল তৈরি করতে হবে, যেখানে ডেটাবেস কনফিগারেশন, ড্রাইভার, ডায়ালেক্ট, এবং অন্যান্য প্রপার্টি নির্ধারণ করা হয়।

hibernate.cfg.xml ফাইল উদাহরণ

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <!-- ডেটাবেস কনফিগারেশন -->
        <property name="hibernate.dialect">NHibernate.Dialect.MsSql2008Dialect</property>
        <property name="hibernate.connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="hibernate.connection.connection_string">Data Source=YourServer;Initial Catalog=YourDatabase;Integrated Security=True</property>

        <!-- ক্যাশিং কনফিগারেশন -->
        <property name="hibernate.cache.use_second_level_cache">true</property>
        <property name="hibernate.cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>

        <!-- অন্যান্য প্রপার্টি -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

এখানে:

  • hibernate.dialect: ডেটাবেসের ধরন (যেমন, MsSql2008Dialect MSSQL ডেটাবেসের জন্য)।
  • hibernate.connection.connection_string: ডেটাবেসের সংযোগ স্ট্রিং।
  • hibernate.cache.use_second_level_cache: সেকেন্ড লেভেল ক্যাশিং ব্যবহার করার কনফিগারেশন।
  • hibernate.hbm2ddl.auto: ডেটাবেসের স্কিমা আপডেট করার কনফিগারেশন (যেমন update বা create বা validate ইত্যাদি)।

৩. SessionFactory তৈরি করা

NHibernate এর SessionFactory একটি গুরুত্বপূর্ণ অংশ যা সেশন তৈরি এবং কনফিগারেশন পরিচালনা করে। এটি তৈরি করার জন্য সাধারণত NHibernateHelper বা SessionFactoryProvider নামে একটি ক্লাস তৈরি করা হয়, যা SessionFactory তৈরি এবং সেশন পরিচালনা করবে।

NHibernateHelper ক্লাস উদাহরণ

using NHibernate;
using NHibernate.Cfg;
using System;

public class NHibernateHelper
{
    private static ISessionFactory sessionFactory;

    static NHibernateHelper()
    {
        // NHibernate কনফিগারেশন লোড করা হচ্ছে
        var configuration = new Configuration();
        configuration.Configure();  // এটি 'hibernate.cfg.xml' থেকে কনফিগারেশন লোড করবে
        sessionFactory = configuration.BuildSessionFactory();  // SessionFactory তৈরি
    }

    public static ISession OpenSession()
    {
        return sessionFactory.OpenSession();  // নতুন সেশন তৈরি
    }
}

এখানে:

  • Configuration.Configure(): এটি hibernate.cfg.xml ফাইল থেকে কনফিগারেশন লোড করে।
  • sessionFactory.BuildSessionFactory(): এটি সেশন ফ্যাক্টরি তৈরি করে।

৪. Entity Classes তৈরি করা

NHibernate তে Entity গুলি ক্লাস হিসেবে তৈরি করতে হয়, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে। ক্লাসগুলির মধ্যে mapping নির্ধারণ করার জন্য সাধারণত Fluent NHibernate বা XML Mapping ব্যবহৃত হয়।

Employee Entity উদাহরণ

using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;

public class Employee
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}

public class EmployeeMap : ClassMapping<Employee>
{
    public EmployeeMap()
    {
        Table("Employee");  // টেবিল নাম

        Id(x => x.Id, map => map.Generator(Generators.Identity));  // Primary Key

        Property(x => x.Name);  // Column for Name
        Property(x => x.Age);   // Column for Age
    }
}

এখানে:

  • EmployeeMap ক্লাসটি Employee ক্লাসের জন্য টেবিল এবং কলাম ম্যাপিং সম্পাদন করছে।

৫. Session ব্যবহার করে ডেটা এক্সেস

এখন আপনি Session ব্যবহার করে ডেটাবেসে ডেটা সেভ, আপডেট, ডিলিট বা রিট্রিভ করতে পারবেন। উদাহরণস্বরূপ, একটি Employee Entity সেভ করার প্রক্রিয়া।

Employee সেভ করা

using (var session = NHibernateHelper.OpenSession())
{
    using (var transaction = session.BeginTransaction())
    {
        var employee = new Employee
        {
            Name = "John Doe",
            Age = 30
        };

        session.Save(employee);  // Employee সেভ
        transaction.Commit();  // Transaction কমিট
    }
}

এখানে:

  • session.Save(employee): এটি Employee Entity ডেটাবেসে সেভ করবে।
  • transaction.Commit(): ট্রানজেকশন কমিট করে ডেটাবেসে পরিবর্তন সেভ করবে।

৬. NHibernate ব্যবহার করে Query Execution

আপনি HQL (Hibernate Query Language) বা Criteria API ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রিভ করতে পারেন।

HQL Query উদাহরণ

using (var session = NHibernateHelper.OpenSession())
{
    var employees = session.CreateQuery("FROM Employee WHERE Age > 25")
                            .List<Employee>();  // Employee ডেটা রিট্রিভ
}

এখানে:

  • CreateQuery ব্যবহার করে HQL মাধ্যমে Employee ডেটা রিট্রিভ করা হচ্ছে।

৭. Dependency Injection (DI) ব্যবহার করা

ASP.NET Core এ NHibernate এর সাথে Dependency Injection (DI) ব্যবহার করলে কোড আরও পরিষ্কার এবং টেস্টেবল হবে।

public class NHibernateSessionFactory
{
    private readonly ISessionFactory _sessionFactory;

    public NHibernateSessionFactory()
    {
        var configuration = new Configuration();
        configuration.Configure();  // hibernate.cfg.xml ফাইল থেকে কনফিগারেশন লোড
        _sessionFactory = configuration.BuildSessionFactory();
    }

    public ISession OpenSession()
    {
        return _sessionFactory.OpenSession();
    }
}

// Startup.cs বা Program.cs এ DI কনফিগার করা
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<NHibernateSessionFactory>();
}

এখানে:

  • NHibernateSessionFactory ক্লাস তৈরি করে ISessionFactory কে DI কন্টেইনারে রেজিস্টার করা হয়েছে।

সারাংশ

ASP.NET অ্যাপ্লিকেশনে NHibernate কনফিগার করার জন্য, প্রথমে NuGet প্যাকেজ ইনস্টল করতে হয়, তারপর hibernate.cfg.xml কনফিগারেশন ফাইল তৈরি করে সঠিক ডেটাবেস সেটিংস নির্ধারণ করতে হয়। এর পর, SessionFactory তৈরি করে ডেটাবেসে Entity সংরক্ষণ, আপডেট, ডিলিট এবং রিট্রিভ করতে NHibernate ব্যবহার করা যায়। NHibernate একটি শক্তিশালী ORM ফ্রেমওয়ার্ক এবং এটি ব্যবহারে ডেটাবেস অপারেশনগুলো সহজ এবং কার্যকর করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...