सबसे पहले, लेन-देन प्रबंधन को सेवा स्तर पर किया जाना चाहिए, न कि DAO परत पर क्योंकि इससे बहुत अधिक प्रदर्शन ओवरहेड बन जाएगा (प्रत्येक अलग-अलग विधि पर उचित लेनदेन अलगाव स्तर और प्रसार से निपटने के लिए)। इसके अलावा, कार्य की एक इकाई का दायरा डेटा एक्सेस लेयर के बजाय सर्विस लेयर से आता है: एक व्यवसाय प्रक्रिया को करने की कल्पना करें जिसमें 2 या अधिक DAO से निपटने की आवश्यकता हो।
इंटरनेट में बहुत सी चर्चा है जो उस दिशा में इंगित करती है जैसे यहाँ , यहाँ और यहाँ ।
वैसे भी, चूंकि यह एक साक्षात्कार है तो आइए इस प्रश्न को स्वीकार करें। मेरे दृष्टिकोण से, आप @Transactional
दोनों तरीकों से एनोटेशन (या XML कॉन्फ़िगरेशन) का उपयोग कर रहे होंगे और REQUIRED
मूल्य के साथ लेन-देन के प्रसार के साथ । इस तरह, जब उन तरीकों में से कोई भी लागू होता है और यदि कोई पिछला लेनदेन मौजूद नहीं है, तो एक नया लेनदेन बनाया जाएगा:
@Transactional
class MyDAO {
@Transactional(propagation = REQUIRED)
public void foo() {
}
@Transactional(propagation = REQUIRED)
public void bar() {
}
}
foo()
औरbar()
उसी लेनदेन को साझा करें और यदि 1 असफल हो तो 1 भी रोलबैक होगा? क्या आप कुछ स्पष्टीकरण दे सकते हैं?