Entity Lifecycle: New, Managed, Detached, Removed

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

305

JPA (Java Persistence API) হল একটি Java API যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত হয় এবং Entity Lifecycle হল JPA এ Entity অবজেক্টের বিভিন্ন অবস্থা বর্ণনা করে। Entity অবজেক্টের চারটি মূল অবস্থা বা লাইফসাইকেল রয়েছে: New, Managed, Detached, এবং Removed। এই অবস্থা গুলি Entity এর জীবনচক্রের বিভিন্ন স্তর বোঝায় এবং JPA Entity Manager এ এই অবস্থা অনুযায়ী Entity গুলির সাথে কাজ করা হয়।

১. New (নতুন)

New অবস্থা তখন হয় যখন একটি Entity অবজেক্ট তৈরি করা হয়, কিন্তু সেটি এখনও EntityManager দ্বারা persisted হয়নি (ডেটাবেসে সংরক্ষিত হয়নি)। এর মানে হল যে Entity অবজেক্টটি ডেটাবেসের সাথে সম্পর্কিত নয়, এটি কেবলমাত্র একটি সাধারণ Java অবজেক্ট।

বৈশিষ্ট্য:

  • Entity অবজেক্টটি new কিওয়ার্ড দিয়ে তৈরি হয়।
  • Entity Manager এর মাধ্যমে এটি এখনও persist করা হয়নি।
  • ডেটাবেসে Entity টির কোনো রেকর্ড নেই।

উদাহরণ:

Person person = new Person();
person.setName("John Doe");
person.setAge(30);

এখানে, person অবজেক্টটি New অবস্থা এ আছে। এটি এখনও ডেটাবেসে সেভ হয়নি।

২. Managed (ম্যানেজড)

Managed অবস্থা তখন হয় যখন একটি Entity অবজেক্ট EntityManager দ্বারা পরিচালিত হয় এবং এটি ডেটাবেসে সংরক্ষিত থাকে। EntityManager যখন Entity অবজেক্টটি persist() মেথড দিয়ে ডেটাবেসে সেভ করে, তখন Entity অবজেক্টটি Managed অবস্থা লাভ করে।

বৈশিষ্ট্য:

  • Entity অবজেক্টটি EntityManager দ্বারা ম্যানেজড।
  • Persist অথবা Merge মেথডের মাধ্যমে Entity ডেটাবেসে সেভ করা হয়েছে।
  • ডেটাবেসে Entity এর একটি রেকর্ড রয়েছে এবং EntityManager স্বয়ংক্রিয়ভাবে এর জীবনচক্র পরিচালনা করে।

উদাহরণ:

EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();

Person person = new Person();
person.setName("Jane Doe");
person.setAge(28);

// EntityManager দ্বারা manage করা হচ্ছে
em.persist(person);

em.getTransaction().commit();

এখানে, person অবজেক্টটি Managed অবস্থায় রয়েছে কারণ এটি persist করা হয়েছে এবং EntityManager এর দ্বারা পরিচালিত।

৩. Detached (ডিটাচড)

Detached অবস্থা তখন হয় যখন একটি Entity অবজেক্টটি আগে Managed ছিল কিন্তু পরবর্তীতে EntityManager থেকে বিচ্ছিন্ন হয়ে যায়। এর মানে হল যে, Entity Manager এর অধীনে এখন আর Entity টি কাজ করছে না এবং Entity Manager এর পরিবর্তনগুলির সাথে Entity এর সম্পর্ক নেই। একবার EntityManager থেকে Entity ডিটাচ হলে, এটি পুনরায় ডেটাবেসে আপডেট করা হবে না যতক্ষণ না এটি আবার Managed অবস্থায় ফিরে না আসে।

বৈশিষ্ট্য:

  • Entity অবজেক্টটি EntityManager দ্বারা আর ম্যানেজ করা হচ্ছে না।
  • clear(), close() অথবা detach() মেথডের মাধ্যমে EntityManager থেকে বিচ্ছিন্ন হয়েছে।
  • Entity Manager থেকে ডিটাচ হওয়ার পর, Entity এর পরিবর্তনগুলো ডেটাবেসে সংরক্ষিত হবে না।

উদাহরণ:

Person person = em.find(Person.class, 1); // Managed State
em.getTransaction().commit();

// EntityManager থেকে detach
em.detach(person);  // Detached State

এখানে, person EntityManager থেকে detach হয়ে গেছে এবং এটি Detached অবস্থায় চলে এসেছে।

৪. Removed (রিমুভড)

Removed অবস্থা তখন হয় যখন একটি Entity অবজেক্ট ডেটাবেস থেকে মুছে ফেলা হয়। EntityManager এর remove() মেথডের মাধ্যমে Entity অবজেক্টটি ডেটাবেস থেকে মুছে দেওয়া হয় এবং এটি Removed অবস্থা লাভ করে। EntityManager এর remove() মেথডটি Entity অবজেক্টটি Managed অবস্থা থেকে Removed অবস্থায় পরিবর্তন করে এবং এটি ডেটাবেসে মুছে ফেলা হয়।

বৈশিষ্ট্য:

  • Entity অবজেক্টটি remove() মেথড দিয়ে ডেটাবেস থেকে মুছে ফেলা হয়েছে।
  • Removed অবস্থা EntityManager দ্বারা পরিচালিত হয়, কিন্তু এটি ডেটাবেসে আর সেভ থাকে না।
  • Entity অবজেক্টটি ডেটাবেসে আর উপস্থিত থাকে না।

উদাহরণ:

EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();

Person person = em.find(Person.class, 1);  // Managed State
em.remove(person);  // Removed State

em.getTransaction().commit();

এখানে, person EntityManager দ্বারা remove() মেথডের মাধ্যমে Removed অবস্থায় চলে গেছে এবং ডেটাবেস থেকে মুছে ফেলা হয়েছে।


সারাংশ


JPA Entity Lifecycle একটি Entity অবজেক্টের বিভিন্ন অবস্থা (State) বর্ণনা করে, এবং এরা হল:

  1. New: Entity অবজেক্টটি তৈরি করা হয়েছে, তবে এটি EntityManager দ্বারা ম্যানেজ করা হয়নি এবং ডেটাবেসে সেভ হয়নি।
  2. Managed: Entity অবজেক্টটি EntityManager দ্বারা পরিচালিত হচ্ছে এবং ডেটাবেসে সেভ হয়েছে।
  3. Detached: Entity অবজেক্টটি EntityManager থেকে বিচ্ছিন্ন হয়েছে, এবং EntityManager এর অধীনে আর কাজ করছে না।
  4. Removed: Entity অবজেক্টটি EntityManager এর মাধ্যমে ডেটাবেস থেকে মুছে ফেলা হয়েছে।

JPA এ EntityManager দ্বারা Entity অবজেক্টের জীবনচক্র পরিচালিত হয় এবং বিভিন্ন অবস্থা পরিবর্তন করতে persist(), merge(), remove(), detach() ইত্যাদি মেথড ব্যবহার করা হয়। Entity Lifecycle এর এই জ্ঞান জPA এর কার্যকারিতা এবং ডেটাবেস অপারেশন সহজতর করে।

Content added By
Promotion

Are you sure to start over?

Loading...