असल में आलसी लोडिंग के पास उत्सुक विकल्प (प्रदर्शन, संसाधनों का उपयोग) से अधिक लाभ हैं। चूंकि यह सभी रिश्तों के लिए डिफ़ॉल्ट grails सेटिंग है (Grails 1.1 के बाद से) आप आमतौर पर उत्सुक लाने के लिए इसे कॉन्फ़िगर नहीं करना चाहिए, जब तक आप कुछ मुद्दों का अनुभव नहीं करते हैं। जैसे:
- एक डोमेन उदाहरण साझा करना अलग हाइबरनेट सत्र पर समन्वयित (जैसे जब http सत्र दायरे में एक डोमेन वर्ग उदाहरण डालने और इसे से गुण तक पहुँचने - इस तरह के एक उपयोगकर्ता के रूप में।) जब डोमेन तक पहुँचने LazyInitializationException हो रही
- लेआउट/विचारों में कक्षा के उदाहरण
- जब आप सुनिश्चित हों, तो जब आप एक उदाहरण प्राप्त करते हैं, तो आप हर समय (या अधिकतर समय) एक निश्चित संबंध संपत्ति तक पहुंच पाएंगे, यह उत्सुक लाने के लिए इस संबंध को कॉन्फ़िगर करने के लिए भी समझदारी होगी।
विशाल डेटाबेस से निपटने के दौरान उत्सुक fetching काफी खतरनाक हो सकता है। इस तरह की एक डोमेन वर्ग की कल्पना कीजिए:
// really bad example
class TreeNode {
String name
TreeNode parent
static hasMany = [ childNodes: TreeNode ]
static mapping {
parent lazy: false
childNodes lazy: false
}
}
जब आप TreeNode उदाहरणों में से किसी भी पढ़ा है, यह स्वचालित रूप से डेटाबेस से डोमेन वर्ग के अन्य सभी इंस्टेंस अपनी स्मृति में खींच लेंगे। जब पर्याप्त उदाहरण होते हैं, तो आप शायद केवल 1 उदाहरण प्राप्त करके आपको एप्लिकेशन मार देंगे।
स्रोत
2009-03-17 15:56:53