अगर हम सिर्फ दृढ़ता के बारे में बात करते हैं, Serializable
की जरूरत नहीं है , लेकिन संस्थाओं को बनाने के लिए यह सबसे अच्छा अभ्यास है Serializable
।
यदि हम उपयोग करने के बजाय सीधे प्रस्तुति परत के संपर्क में आ रहे हैं domain
/ entities
वस्तुओं DTO
, उस मामले में हमें लागू करने की आवश्यकता है Serializable
। ये डोमेन ऑब्जेक्ट HTTPSession
कैशिंग / ऑप्टिमाइज़ेशन उद्देश्यों के लिए संग्रहीत किए जा सकते हैं। Http-सत्र को क्रमबद्ध या क्लस्टर किया जा सकता है। और यह भी आवश्यक है कि डेटा को बीच-बीच में स्थानांतरित किया JVM
जाए।
जब हम DTO
दृढ़ता परत और सेवा परत को कम करने के लिए उपयोग करते हैं, तो डोमेन ऑब्जेक्ट्स को चिह्नित Serializable
करना काउंटर उत्पादक होगा और " encapsulation
" का उल्लंघन करेगा । तब यह एक विरोधी पैटर्न बन जाता है।
समग्र पहचानकर्ता
प्राथमिक कुंजी वर्ग क्रमबद्ध होना चाहिए।
POJO मॉडल
यदि किसी निकाय उदाहरण को दूरस्थ वस्तु के रूप में दूरस्थ रूप से उपयोग किया जाना है, तो इकाई वर्ग को Serializable
इंटरफ़ेस लागू करना होगा ।
कैश
इसके अलावा, यदि आप एक clustered
दूसरे स्तर को लागू कर रहे हैं cache
तो आपकी इकाइयाँ होनी चाहिए serializable
। पहचानकर्ता को होना चाहिए Serializable
क्योंकि यह एक जेपीए आवश्यकता है क्योंकि identifier
दूसरे स्तर के कैश प्रविष्टि के लिए कुंजी के रूप में उपयोग किया जा सकता है।
और जब हम संस्थाओं को अनुक्रमित करते हैं तो serialVersionUID
निजी पहुंच संशोधक के साथ स्पष्ट प्रदान करना सुनिश्चित करते हैं । क्योंकि यदि कोई serializable
वर्ग स्पष्ट रूप से घोषित नहीं करता है serialVersionUID
, तो क्रमिक क्रम रनिंग serialVersionUID
क्लास के विभिन्न पहलुओं के आधार पर उस वर्ग के लिए एक डिफ़ॉल्ट मान की गणना करेगा , जैसा कि जावा (टीएम) ऑब्जेक्ट सीरियलाइजेशन विशिष्टता में वर्णित है। डिफ़ॉल्ट serialVersionUID
गणना वर्ग विवरणों के प्रति अत्यधिक संवेदनशील है जो संकलक कार्यान्वयन के आधार पर भिन्न हो सकते हैं, और इस प्रकार InvalidClassExceptions
डिसेरलाइज़ेशन के दौरान अप्रत्याशित हो सकते हैं ।