मेरे पसंदीदा दृष्टिकोण JSR 303 (बीन मान्यता एपीआई) का उपयोग करने के लिए सुनिश्चित करना है कि वर्ग के गुणों मान्य होते हैं।
सेटर्स में सत्यापन करने के लिए यह ठीक है, लेकिन यह हमेशा एक वांछनीय दृष्टिकोण नहीं है। एक दूसरे से संबंधित नहीं हैं कि कई संदर्भों की जरूरतों को मिश्रण करने की क्षमता है। उदाहरण के लिए, आपकी कुछ संपत्तियों को उपयोगकर्ता-इंटरफ़ेस से कभी भी सेट नहीं किया जाना चाहिए, और इसके बजाय जारी रखने से पहले, किसी सेवा द्वारा गणना की जाएगी। ऐसी घटना में, इस तर्क को एक सेटटर के अंदर रखना वांछनीय नहीं है, क्योंकि आपको उस संदर्भ को जानने की आवश्यकता होगी जिसमें सेटर को बुलाया जा रहा है; आपको अपनी यूआई परत और अपनी दृढ़ता परत में विभिन्न नियमों को लागू करने की आवश्यकता होगी। जेएसआर 303 आपको सत्यापन समूहों का उपयोग करके इन चिंताओं को अलग करने की अनुमति देता है, ताकि आपका यूआई सत्यापन समूह आपके दृढ़ता सत्यापन समूह से अलग हो।
जेपीए 2.0, जब आप बाधाओं है कि एक JSR 303 सत्यापनकर्ता द्वारा मूल्यांकन किया जाता है का उपयोग कर अपने वर्ग व्याख्या करते हैं, अपने हठ प्रदाता स्वचालित रूप से PrePersist
, PreUpdate
और PreRemove
पर इन बाधाओं (आमतौर पर ऐसा नहीं किया, नीचे देखें) का मूल्यांकन कर सकते में के जीवन चक्र की घटनाओं संस्थाओं। अपने जेपीए प्रदाता में इकाइयों के सत्यापन को निष्पादित करने के लिए, आपको validation-mode
तत्व या javax.persistence.validation.mode
संपत्ति को persistence.xml
फ़ाइल में निर्दिष्ट करना होगा; मान AUTO
(डिफ़ॉल्ट) या CALLBACK
(और NONE
नहीं) होना चाहिए।
बीन सत्यापन प्रदाता की उपस्थिति यह सुनिश्चित करने के लिए पर्याप्त है कि जेपीए इकाई जीवन चक्र घटनाओं पर सत्यापन होता है, क्योंकि डिफ़ॉल्ट मान AUTO
है। आप जावा ईई 6 अनुप्रयोग सर्वर में डिफ़ॉल्ट रूप से इसे प्राप्त करते हैं; ग्लासफ़िश जेएसआर 303 के आरआई कार्यान्वयन का उपयोग करता है जो हाइबरनेट वैलिडेटर है, और यह एक्लिप्ससेंक के साथ भी अच्छी तरह से काम करता है।
CALLBACK
मोड आपको लाइफसाइक्ल ईवेंट ट्रिगर होने पर लागू होने वाले सत्यापन समूहों को ओवरराइड करने की अनुमति देगा। डिफ़ॉल्ट रूप से, डिफ़ॉल्ट बीन सत्यापन समूह (Default
) अद्यतन और लगातार घटनाओं के लिए मान्य किया जाएगा; निकालने की घटना में कोई सत्यापन शामिल नहीं है। CALLBACK
मोड आपको javax.persistence.validation.group.pre-persist
, javax.persistence.validation.group.pre-update
और javax.persistence.validation.group.pre-remove
गुणों का उपयोग करके इन घटनाओं के लिए एक अलग सत्यापन समूह निर्दिष्ट करने की अनुमति देता है।
ध्यान रखें कि जेएसआर 303 सत्यापन जावा ईई कंटेनर के बाहर उपयोग किया जा सकता है, हालांकि ऊपर पोस्ट किया गया बीन सत्यापन एपीआई दस्तावेज लिंक जावा ईई 6 एपीआई दस्तावेज से है।
स्रोत
2011-08-09 17:25:41
धन्यवाद! आपकी मदद की बहुत सराहना की जाती है, और अन्य दृष्टिकोण के बारे में जानकर खुशी हुई :) – VaclavDedik
आपका स्वागत है :) –