থেকে হাইবারনেট ফোরাম :
এটি হাইবারনেট ইন অ্যাকশন বইটি থেকে। ভাল এটি পড়ুন ..
সনাক্তকারী দ্বারা অবজেক্টগুলি পুনরুদ্ধার করা নিম্নলিখিত হাইবারনেট কোড স্নিপেট ডাটাবেস থেকে একটি ব্যবহারকারী অবজেক্ট পুনরুদ্ধার করে:
User user = (User) session.get(User.class, userID);
গেট () পদ্ধতিটি বিশেষ কারণ শনাক্তকারী অনন্যভাবে কোনও শ্রেণীর একক উদাহরণ সনাক্ত করে। সুতরাং অবিচ্ছিন্ন অবজেক্টের জন্য সুবিধাজনক হ্যান্ডেল হিসাবে সনাক্তকারী ব্যবহার করা অ্যাপ্লিকেশনগুলির পক্ষে সাধারণ। সনাক্তকারী দ্বারা পুনরুদ্ধার কোনও বস্তু পুনরুদ্ধার করার সময় ক্যাশে ব্যবহার করতে পারে, বস্তুটি ইতিমধ্যে ক্যাশে থাকলে ডাটাবেস হিট এড়ানো। হাইবারনেট একটি লোড () পদ্ধতিও সরবরাহ করে:
User user = (User) session.load(User.class, userID);
লোড () পদ্ধতিটি পুরানো; get () ব্যবহারকারীর অনুরোধের কারণে হাইবারনেটের API এ যুক্ত হয়েছিল। পার্থক্যটি তুচ্ছ:
লোড () যদি ক্যাশে বা ডাটাবেসে বস্তুটি খুঁজে না পায় তবে একটি ব্যতিক্রম ছুঁড়ে দেওয়া হবে। লোড () পদ্ধতিটি কখনই শূন্য হয় না। বস্তুটি খুঁজে পাওয়া না গেলে get () পদ্ধতিটি শূন্য দেয়।
লোড () পদ্ধতিটি প্রকৃত অবিচলিত উদাহরণগুলির পরিবর্তে প্রক্সি ফিরিয়ে দিতে পারে। প্রক্সি হ'ল একটি স্থানধারক যা প্রথমবার অ্যাক্সেস করার পরে আসল বস্তুর লোডকে ট্রিগার করে; অন্যদিকে, পান () কখনই প্রক্সি ফেরত দেয় না। () এবং লোড () এর মধ্যে চয়ন করা সহজ: আপনি যদি নিশ্চিত হন যে অবিচ্ছিন্ন বস্তুটি বিদ্যমান এবং অস্তিত্বকে ব্যতিক্রমী হিসাবে বিবেচনা করা হবে, তবে লোড () একটি ভাল বিকল্প। আপনি যদি নিশ্চিত না হন যে প্রদত্ত শনাক্তকারীটির সাথে একটি অবিরাম উদাহরণ রয়েছে, get () ব্যবহার করুন এবং এটি বাতিল কিনা তা দেখতে রিটার্ন মানটি পরীক্ষা করুন। লোড () ব্যবহার করে আরও জড়িত থাকে: অ্যাপ্লিকেশনটির অবিরাম পরিস্থিতি পুনরুদ্ধার করতে ডাটাবেসকে আঘাত না করেই স্থির দৃষ্টান্তে একটি বৈধ রেফারেন্স (প্রক্সি) পেতে পারে। সুতরাং লোড () ক্যাশে বা ডাটাবেসে স্থির বস্তুটি না পেলে ব্যতিক্রম ছুঁড়ে না ফেলে; প্রক্সিটি অ্যাক্সেস করা হলে ব্যতিক্রমটি পরে নিক্ষেপ করা হবে। অবশ্যই, সনাক্তকারী দ্বারা কোনও জিনিস পুনরুদ্ধার করা স্বেচ্ছাসেবী ক্যোয়ারীগুলি ব্যবহার করার মতো নমনীয় নয়।