Persistence Context এবং Persistence Unit

JPA এর বেসিক কনসেপ্ট - জেপিএ  (JPA) - Java Technologies

353

JPA (Java Persistence API) হল একটি ইন্টারফেস যা Java অ্যাপ্লিকেশনগুলিতে ডেটাবেসের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়। এটি ORM (Object-Relational Mapping) এর মাধ্যমে অবজেক্ট ও ডেটাবেস টেবিলের মধ্যে ম্যাপিং করতে সহায়তা করে। JPA-তে দুটি গুরুত্বপূর্ণ ধারণা হল Persistence Context এবং Persistence Unit, যা ডেটাবেস অপারেশন ও অবজেক্ট লাইফসাইকেল পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ।

Persistence Context


Persistence Context হল একটি পরিবেশ বা কন্টেক্সট যেখানে Entity অবজেক্টগুলো managed state তে থাকে। এটি কার্যকরভাবে EntityManager এর মাধ্যমে পরিচালিত হয়। যখন কোনো entity (অবজেক্ট) একটি persistence context তে থাকে, তখন তা managed entity হয়ে যায়, যার মানে হলো সেই entity তে পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে ডেটাবেসে সেভ করা হবে।

Persistence Context-এর মাধ্যমে JPA ডেটাবেস ট্রানজেকশনের মধ্যে অবজেক্টগুলোকে ট্র্যাক করে এবং transactional consistency নিশ্চিত করে। এটি একটি unit of work হিসেবে কাজ করে।

Persistence Context-এর বৈশিষ্ট্য:

  1. EntityManager: এটি Persistence Context এর সাথে সম্পর্কিত। EntityManager অবজেক্টটি ডেটাবেসে CRUD অপারেশন (Create, Read, Update, Delete) সম্পাদন করার জন্য ব্যবহৃত হয়।
  2. Managed Entities: Persistence Context এ থাকা অবজেক্টগুলো managed entities নামে পরিচিত। EntityManager সেই অবজেক্টের ওপর ট্র্যাকিং করে এবং সেই অবজেক্টে করা পরিবর্তন ডেটাবেসে সেভ করে।
  3. Unit of Work: Persistence Context-এ থাকা সব অবজেক্টের পরিবর্তনগুলো একত্রে ডেটাবেসে commit করা হয়, যা এক একটি transaction এর অংশ হিসেবে কাজ করে।

উদাহরণ:

@Entity
public class User {
    @Id
    private Long id;
    private String name;

    // Getters and Setters
}

public class UserService {
    @PersistenceContext
    private EntityManager entityManager;

    public void createUser(User user) {
        entityManager.persist(user);  // Persisting an entity
    }

    public User findUser(Long id) {
        return entityManager.find(User.class, id);  // Retrieving an entity
    }
}

এখানে, @PersistenceContext অ্যানোটেশন দিয়ে EntityManager ইনজেক্ট করা হয়েছে, যা Persistence Context এর অংশ হিসেবে কাজ করবে।

Persistence Unit


Persistence Unit হল একটি কনফিগারেশন সেটআপ যা JPA এর মাধ্যমে ডেটাবেসে সংযোগ স্থাপন এবং পরিচালনা করতে সহায়তা করে। এটি একটি set of entities এবং configuration এর集合, যা ডেটাবেসের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয়। Persistence Unit সাধারণত persistence.xml ফাইলে কনফিগার করা হয়।

Persistence Unit-এর বৈশিষ্ট্য:

  1. persistence.xml: Persistence Unit সাধারণত META-INF/persistence.xml ফাইলে কনফিগার করা হয়, যেখানে ডেটাবেস সংযোগের জন্য প্রয়োজনীয় সেটিংস এবং Entity classes উল্লেখ করা থাকে।
  2. DataSource: Persistence Unit ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য DataSource বা JDBC কনফিগারেশন ধারণ করে।
  3. Transaction Management: এটি ট্রানজেকশন পরিচালনার জন্য JTA বা RESOURCE_LOCAL ব্যবহৃত হয়।

persistence.xml উদাহরণ:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="myJpaUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:/MyDataSource</jta-data-source>
        <class>com.example.User</class> <!-- Entity class -->
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

এখানে:

  • name="myJpaUnit": Persistence Unit এর নাম।
  • <class>: Entity classes যা Persistence Unit এর অংশ।
  • <properties>: JPA কনফিগারেশন সেটিংস, যেমন Hibernate ডায়ালেক্ট, hibernate.dialect, এবং schema generation এর জন্য hibernate.hbm2ddl.auto প্রোপার্টি।

Persistence Context এবং Persistence Unit এর সম্পর্ক


  • Persistence Context এবং Persistence Unit একে অপরের সাথে সম্পর্কিত হলেও তাদের কাজের পরিসর আলাদা।
  • Persistence Unit হল configuration যা JPA এর মাধ্যমে EntityManagerFactory তৈরি করে এবং এটি ডেটাবেসের সাথে সম্পর্কিত।
  • Persistence Context হল একটি runtime state যা EntityManager দ্বারা পরিচালিত হয় এবং ডেটাবেসের সাথে managed entities কে সম্পর্কিত করে।

সারাংশ


  • Persistence Context হল একটি পরিবেশ যেখানে entities গুলি managed থাকে এবং EntityManager দ্বারা পরিচালিত হয়।
  • Persistence Unit হল একটি কনফিগারেশন সেটআপ যা ডেটাবেসের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয় এবং এতে Entity classes ও অন্যান্য সেটিংস থাকে।
  • JPA-তে Persistence Context এবং Persistence Unit একসাথে কাজ করে ডেটাবেসে কার্যকরীভাবে ডেটা পরিচালনা করতে।

Persistence Context এবং Persistence Unit জাভা অ্যাপ্লিকেশনের ডেটাবেস ইন্টিগ্রেশন এবং ডেটা ম্যানিপুলেশন সিস্টেমে গুরুত্বপূর্ণ ভূমিকা পালন করে, যা JPA এবং ORM ভিত্তিক অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...