अगर हम सिर्फ दृढ़ता के बारे में बात करते हैं, 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डिसेरलाइज़ेशन के दौरान अप्रत्याशित हो सकते हैं ।