मैं वर्तमान में अपना खुद का छोटा ओआरएम रोल कर रहा हूं, और एक ही इकाई को डेटाबेस से एक से अधिक लोड करने से रोकने के लिए खुद को एक कैनोलिकलाइजिंग मैपिंग बनाने के कार्य का सामना करना पड़ता हूं।जावा में कैनोलिकलाइजिंग मैपिंग को कैसे कार्यान्वित करें?
मेरा वर्तमान दृष्टिकोण HashMap<Object, WeakReference<Object>>
का उपयोग करना है। कुंजी मैप किए गए डेटाबेस-इकाई की प्राथमिक कुंजी है (ArrayList<Object>
यदि यह एक समग्र कुंजी है), और मान WeakReference<Object>
हैं।
मेरी मुख्य समस्या यह है कि मानचित्र को कैसे साफ किया जाए? जब किसी ऑब्जेक्ट का उपयोग नहीं किया जाता है, तो मानचित्र में कमजोर संदर्भ null
पर जाएगा, और मैं इसे केवल अगले लुकअप पर खोजूंगा (या कभी नहीं, अगर मैं ऑब्जेक्ट को फिर से नहीं देखता)। जब मैं साफ़ हो जाता हूं तो मैं ReferenceQueue
के साथ कमजोर संदर्भों को पंजीकृत कर सकता हूं, और उसके बाद हर बार जब मैं कुछ देखता हूं तो उस कतार की जांच कर सकता हूं। स्पष्ट संदर्भ मुझे कोई संकेत नहीं देगा कि किस ऑब्जेक्ट को मंजूरी दे दी गई थी, इसलिए मुझे लगता है कि मुझे नक्शा में कुंजी स्टोर करने के लिए WeakReference
उप-वर्ग करना होगा, इसलिए संदर्भ को साफ़ करने के बाद मैं इसे हटा सकता हूं।
क्या यह तरीका है, या इसे लागू करने का कोई आसान तरीका है?
मैं इस पुस्तकालय को जोड़ने के लिए पहली बार संकोच कर रहा था, लेकिन अब मैंने किया, मुझे आश्चर्य है कि मैंने पहले ऐसा क्यों नहीं किया था। इस महान जवाब के लिए धन्यवाद! –