প্রক্সি
একটি ডক্ট্রাইন প্রক্সি কেবল একটি মোড়ক যা এটির জন্য অলস লোডিং সরবরাহ করতে সত্তা শ্রেণি প্রসারিত করে।
ডিফল্টরূপে, আপনি যখন অন্য সত্তার সাথে সম্পর্কিত একটি সত্তার জন্য সত্তা পরিচালককে জিজ্ঞাসা করেন, তখন সংশ্লিষ্ট সত্তা ডাটাবেস থেকে লোড হবে না, তবে প্রক্সি অবজেক্টে আবৃত হবে। যখন আপনার অ্যাপ্লিকেশন তখন কোনও সম্পত্তির জন্য অনুরোধ করে বা এই প্রক্সাইড সত্তার কোনও পদ্ধতিতে কল করে তখন ডক্ট্রাইন ডাটাবেস থেকে সত্তাটি লোড করে দেবে (আপনি যখন আইডির অনুরোধ করবেন না, যা সর্বদা প্রক্সিটির সাথে পরিচিত)।
প্রক্সিটি আপনার সত্তা শ্রেণীর প্রসারিত করে এই কারণে এটি আপনার আবেদনে সম্পূর্ণ স্বচ্ছ হয় happens
মতবাদটি ডিফল্টভাবে হাইড্রেট সংঘগুলি অলস লোড প্রক্সি হিসাবে সংঘবদ্ধ করে যদি আপনি JOIN
সেগুলি আপনার ক্যোয়ারিতে না রাখেন বা আনতে মোড সেট করেন না EAGER
।
এখন আমার এটি অবশ্যই যুক্ত করা উচিত কারণ আমার কাছে সর্বত্র মন্তব্য করার মতো খ্যাতি নেই:
দুর্ভাগ্যক্রমে, ক্রোজিনের উত্তরে ভুল তথ্য রয়েছে।
আপনি যদি একটি ডিকিউএল কোয়েরি কার্যকর করেন
SELECT u.id, u.username FROM Entity\User u WHERE u.id = :id
আপনি কোনও (প্রক্সড) সত্তা বস্তু পাবেন না, তবে একটি সহযোগী অ্যারে পাবেন। সুতরাং কোনও অতিরিক্ত বৈশিষ্ট্য লোড করা সম্ভব নয়।
এটি মাথায় রেখে, একটি সিদ্ধান্তে পৌঁছেছে যে ব্যবহারের ক্ষেত্রে উদাহরণটি কাজ করবে না। $article
অবজেক্ট হিসাবে অ্যাক্সেস করার জন্য ডিকিউএলকে এই জাতীয় কিছুতে পরিবর্তন করতে হবে :
SELECT a FROM Entity\Article a ORDER BY a.createdAt DESC LIMIT 25
এবং সমস্ত 25 সত্তার getContent()
সামগ্রীর বৈশিষ্ট্য লোড না করার জন্য সম্পত্তিটি ফেরত দেওয়া সম্পত্তি হতে হবে ।
আংশিক বিষয়
আপনি যদি সংস্থাগুলি নয় এমন সত্তা বৈশিষ্ট্যগুলি আংশিকভাবে লোড করতে চান তবে আপনাকে এই মতবাদটি স্পষ্টভাবে বলতে হবে:
SELECT partial u.{id, username} FROM Entity\User u WHERE u.id = :id
এটি আপনাকে আংশিকভাবে লোড করা সত্তা বস্তু দেয়।
তবে সাবধান হোন যে আংশিক জিনিসগুলি প্রক্সি নয় ! অলস লোডিং তাদের জন্য প্রযোজ্য নয়। সুতরাং, আংশিক জিনিস ব্যবহার করা সাধারণত বিপজ্জনক এবং এড়ানো উচিত should আরও পড়ুন: আংশিক বিষয় - মতবাদ 2 ওআরএম 2 ডকুমেন্টেশন