सेवा परत होने की ओर मेरा झुकाव सबसे बड़ा कारण निम्नलिखित दो कारणों से है...
-
तरीकों को @Transactional के रूप में चिह्नित करना ताकि इस पद्धति के अंदर सभी DAO अनुरोध एक ही लेन-देन में हो सकें।
-
मैं डीएओ और उपयोगकर्ता भूमिकाओं से चिंता का पृथक्करण बढ़ा सकता हूं। मैं कुछ उपयोगकर्ता भूमिकाओं की आवश्यकता के रूप में विधियों को चिह्नित कर सकता हूं और इस तरह यह स्प्रिंग सुरक्षा के साथ वास्तव में अच्छी तरह से बैठता है।
आप नियंत्रक से केवल एक डीएओ को कॉल कर सकते हैं, लेकिन यदि आप बाद में विस्तार करना चाहते हैं तो यह आपको अटका देता है। कनेक्शन प्राप्त करने के लिए आप सेवा को @Transactional के रूप में चिह्नित कर सकते हैं और DAO @Repository के रूप में उपयोग कर सकते हैं और स्प्रिंग आपके और इंजेक्शन आदि के लिए सत्र ऑब्जेक्ट प्राप्त करने की पूरी प्रक्रिया को संभाल लेगा।
मैं सेवा परत के बारे में सोचता हूं (शायद गलत तरीके से) एक मुखौटा के रूप में जिसे एक्सेस किया जाता है, चाहे वह वेब सेवा या नियंत्रक से हो या जो कुछ भी हो, यह अलग रहता है।