2014-04-27 9 views
13

मेरे पास यह स्प्रिंग डेटा CrudRepository है जो डीआर पर सीआरयूडी संचालन को संभालता है।वसंत क्रूड रिपोजिटरी अपवाद

@Repository 
public interface IUserRepository extends CrudRepository<User, String> { 

} 

User मेरी DB के एक उपयोगकर्ता तालिका के इकाई है।

  • delete(String ID)
  • findOne(String ID)
  • save(User user)

रूप documentation में कहा गया है, हटा सकते हैं और लगता है के संचालन के मामले में IllegalArgumentException फेंक दिया आईडी है: CrudRepository भंडार करने के लिए अर्थात् निम्नलिखित कार्यों कहते हैं शून्य जबकि सहेजने का ऑपरेशन कोई अपवाद नहीं फेंकता है।

समस्या यह है कि क्रूड रिपोजिटरी का जावडोक इन परिचालनों द्वारा फेंकने वाले अन्य अपवादों के बारे में कोई उल्लेख नहीं करता है। उदाहरण के लिए यह नहीं बताता है कि delete(String ID) आपरेशन एक EmptyResultDataAccessException मामले में प्रदान की आईडी डीबी में अस्तित्वहीन है फेंकता है।

save(User user) आपरेशन के जावाडोक में यह स्पष्ट नहीं है जो अपवाद मामले में आप एक नया उपयोगकर्ता जो एक डेटा अखंडता बाधा (अद्वितीय क्षेत्रों और विदेशी कुंजी पर) टूट जाता है सम्मिलित फेंक दिया जाता है। इसके अलावा यह आपको चेतावनी नहीं देता है कि आप एक नया या मौजूदा उपयोगकर्ता लिख ​​रहे हैं या नहीं: यह केवल एक नया उपयोगकर्ता बनाता है या अस्तित्व में ओवरराइट करता है (इसलिए यह एक सम्मिलित + अपडेट ऑपरेशन है)।

एक एंटरप्राइज़ एप्लिकेशन में मुझे प्रत्येक फेंकने योग्य अपवाद को पकड़ने में सक्षम होना चाहिए, एक ऑपरेशन फेंक सकता है और मुझे ऑपरेशन के जावाडोक में इसके बारे में पढ़ना चाहिए।

क्या आप क्रूड रिपोजिटरी अपवादों के बारे में कोई स्पष्ट दस्तावेज़ीकरण जानते हैं?

, धन्यवाद

उत्तर

22

वसंत में निर्मित अपवाद अनुवाद तंत्र है, ताकि जेपीए हठ प्रदाताओं द्वारा फेंका सभी अपवादों को वसंत के DataAccessException में बदला जाता है - सभी सेम @Repository (या कॉन्फ़िगर) के साथ एनोटेट के लिए।

  • NonTransientDataAccessException - -

    चार मुख्य समूहों रहे हैं लेकिन इसके कुछ अपवाद हैं जहां एक ही आपरेशन के एक पुनः प्रयास विफल हो जाएगा जब तक कि अपवाद के कारण सही है कर रहे हैं। इसलिए यदि आप उदाहरण के लिए गैर मौजूदा आईडी पास करते हैं, तो यह तब तक असफल हो जाएगा जब तक डेटाबेस में आईडी मौजूद न हो।

  • RecoverableDataAccessException - अपवाद जो वसूली कर रहे हैं - - कुछ वसूली चरणों के बाद इन पिछले एक के "विपरीत" कर रहे हैं। एपीआई दस्तावेज़

  • ScriptException - एसक्यूएल से संबंधित अपवाद, उदाहरण के लिए अच्छी तरह से गठित स्क्रिप्ट को संसाधित करने का प्रयास करते समय अधिक जानकारी।

  • TransientDataAccessException - ये अपवाद हैं जब किसी भी स्पष्ट चरण के बिना पुनर्प्राप्ति संभव है, उदा। जब डेटाबेस में टाइमआउट होता है, तो आप कुछ सेकंड के बाद पुनः प्रयास कर रहे हैं।

जिसके अनुसार, सभी अपवादों बारे में दस्तावेज़ प्राप्त करने के लिए आदर्श जगह है - एपीआई में ही है - बस DataAccessException के पदानुक्रम के माध्यम से जाना।

+0

आपको सभी अपवादों के लिंक की आपूर्ति करने और विस्तार से समझाते हुए उनका क्या मतलब है। –

+1

@vtor "अंतर्निहित अपवाद अनुवाद तंत्र" से आपका क्या मतलब है। मैं उत्सुक हूं कि वसंत दस्तावेज स्पष्ट रूप से क्यों नहीं कहता है कि कुछ विधियां इस डेटाएक्सएक्सएशन को फेंकती हैं, उदाहरण के लिए क्रूड रिपोजिटरी क्लास की विधि सहेजें। – fabrik

संबंधित मुद्दे