get() পদ্ধতি

আপনি যদি একটি বস্তুর আইডি (বা প্রাথমিক কী) দ্বারা পেতে চান, তাহলে হাইবারনেট এর জন্য তিনটি পদ্ধতি রয়েছে:

  • বোঝা()
  • পাওয়া()
  • অনুসন্ধান()

তারা একই জিনিস করে, কিন্তু সূক্ষ্মতা আছে। get() পদ্ধতির সাধারণ বিন্যাস হল:

EntityClass Name = session.get(EntityClass.class, Object primaryKey);

get() পদ্ধতিটি তার দ্বিতীয় প্যারামিটার হিসেবে যে বস্তুটিকে ফেরত দিতে হবে তার আইডি (প্রাথমিক কী) নেয়। এটি তখন ডাটাবেস থেকে সেই বস্তুটিকে লোড করে এবং ফেরত দেয়। উদাহরণ:

User user = session.get(User.class, 2);

যদি এই আইডি সহ একটি রেকর্ড ডাটাবেসে পাওয়া না যায়, তাহলে পদ্ধতিটি শূন্য হয়ে যাবে।

load() পদ্ধতি

একটি বস্তু লোড করার জন্য দ্বিতীয় পদ্ধতি হল load() পদ্ধতি । load() পদ্ধতির সাধারণ বিন্যাস একই:

EntityClass Name = session.load(EntityClass.class, Object primaryKey);

যাইহোক, এর আচরণ get() পদ্ধতি থেকে ভিন্ন ।

প্রথমত, এই পদ্ধতিটি একটি বাস্তব বস্তু ফেরত দেয় না, কিন্তু একটি প্রক্সি: একটি ভার্চুয়াল স্টাব।

দ্বিতীয়ত, load() পদ্ধতি ব্যবহার করার সময় , ডাটাবেসে এমন একটি এন্ট্রি আছে কিনা তা পরীক্ষা করা হয় না। পরিবর্তে, হাইবারনেট অবিলম্বে পাস করা আইডি সহ একটি প্রক্সি অবজেক্ট তৈরি করে এবং এটি ফেরত দেয়।

তৃতীয়ত, প্রক্সি অবজেক্টের পদ্ধতিগুলি কল করার সময় ডাটাবেসের সাথে সমস্ত কাজ ঘটবে। আপনি যদি কল করার চেষ্টা করেন, উদাহরণস্বরূপ, getName() পদ্ধতি , তাহলে ডাটাবেসে প্রথম কল হবে। উদাহরণ:

User user = session.load(User.class, new Integer(123));
String name = user.getName(); //this is where the first call to the database will occur

লোড() পদ্ধতিটি ডাটাবেসে বস্তুর উপস্থিতি পরীক্ষা করার জন্য ব্যবহার করা উচিত নয় - এটি কেবল এটি দেখাবে না। উপরন্তু, যদি আপনি একটি অবৈধ আইডি পাস করেন, যেমন নাল, এটি কেবল নাল ফিরে আসবে।

find() পদ্ধতি

find() পদ্ধতিটি জেপিএ স্ট্যান্ডার্ড থেকে সেশন ইন্টারফেসে পাঠানো হয়েছিল। এবং যেমন আপনি জানেন, এই মানটি শুধুমাত্র পদ্ধতির স্বাক্ষর বর্ণনা করে না, তবে আচরণকেও নিয়ন্ত্রণ করে।

এই পদ্ধতিটি ঠিক get() পদ্ধতির মতো কাজ করে । যদি পাস করা কী দ্বারা বস্তুটি পাওয়া না যায়, তাহলে পদ্ধতিটি কেবল শূন্য হয়ে যাবে।

User user = session.find(User.class, -2); //method will return null

refresh() পদ্ধতি

একটি ডাটাবেস থেকে একটি বস্তু লোড করার সাথে সম্পর্কিত আরেকটি দরকারী পদ্ধতি হল refresh() পদ্ধতি ।

পাস করা অবজেক্টের উপর ভিত্তি করে ডাটাবেসের ডেটা আপডেট করা persist() পদ্ধতিটি মনে রাখবেন ? সুতরাং, refresh() পদ্ধতি ঠিক বিপরীত কাজ করে: এটি ডাটাবেস থেকে ডেটার উপর ভিত্তি করে একটি বিদ্যমান অবজেক্ট আপডেট করে।

এই আচরণটি প্রয়োজনীয় যদি, উদাহরণস্বরূপ, ডাটাবেসে একটি বস্তু লেখার সময়, সেখানে বিভিন্ন সঞ্চিত পদ্ধতিগুলি বলা হয় যা লিখিত ডেটা সংশোধন করে।

এই ধরনের ক্ষেত্রে, যদি এটি পরিবর্তিত হওয়ার সম্ভাবনা থাকে তবে ডাটাবেস থেকে অবজেক্টটি পুনরায় পড়া উপযোগী হতে পারে। উদাহরণ:

User user = new User();
user.setName("Kolyan");
session.persist(user);
session.flush();  //Force called SQL INSERT and call triggers

session.refresh(user);
// here we continue to work with the updated object