आपका प्रश्न वास्तव में किस बारे में है? @Repository
एनोटेशन का उपयोग या @Transactional
।
@Repository
इस बात की बिल्कुल भी जरूरत नहीं है कि आपके द्वारा घोषित किए गए इंटरफ़ेस को एक प्रॉक्सी द्वारा समर्थित किया जाएगा जो स्प्रिंग डेटा इन्फ्रास्ट्रक्चर बनाता है और वैसे भी अपवाद अनुवाद को सक्रिय करता है। इसलिए स्प्रिंग डेटा रिपॉजिटरी इंटरफ़ेस पर इस एनोटेशन का उपयोग करने से कोई प्रभाव नहीं पड़ता है।
@Transactional
- जेपीए मॉड्यूल के लिए हमारे पास यह टिप्पणी एनोटेशन कार्यान्वयन वर्ग पर प्रॉक्सी ( SimpleJpaRepository
) के समर्थन में है । यह दो कारणों से है: पहला, वस्तुओं को बनाए रखना और हटाना जेपीए में लेनदेन की आवश्यकता है। इस प्रकार हमें यह सुनिश्चित करने की आवश्यकता है कि एक लेन-देन चल रहा है, जिसे हम विधि के साथ एनोटेट करके करते हैं @Transactional
।
जैसे तरीकों पढ़ना findAll()
और findOne(…)
प्रयोग कर रहे हैं @Transactional(readOnly = true)
जो सख्ती से आवश्यक नहीं है लेकिन लेन-देन के बुनियादी ढांचे में कुछ अनुकूलन चलाता है (स्थापित करने FlushMode
के लिए MANUAL
दृढ़ता प्रदाताओं संभावित गंदा चेकों को छोड़ जब बंद करने जाने के लिए EntityManager
)। इससे परे कि झंडा JDBC कनेक्शन पर भी सेट है, जो उस स्तर पर और अनुकूलन का कारण बनता है।
आप किस डेटाबेस का उपयोग करते हैं इसके आधार पर तालिका के ताले को छोड़ सकते हैं या यहां तक कि उन लेखन कार्यों को अस्वीकार कर सकते हैं जिन्हें आप गलती से ट्रिगर कर सकते हैं। इस प्रकार हम आपको @Transactional(readOnly = true)
क्वेरी विधियों के लिए उपयोग करने की सलाह देते हैं जो आप आसानी से उस एनोटेशन को रिपॉजिटरी इंटरफेस में जोड़ सकते हैं। सुनिश्चित करें कि आपने @Transactional
उस इंटरफ़ेस में हेरफेर करने के तरीकों में एक सादा जोड़ दिया है या घोषित किया है।