तो मुझे यह सामान्य डीएओ चीज चल रही है और चेहरे की कीमत पर यह ठीक प्रतीत होता है। यह मूल रूप से Hibernate लोगों से CaveatEmptor नमूना आवेदन के बाद मॉडलिंग किया गया है।डीएओ पैटर्न - लेनदेन कहां फिट होते हैं?
इसके ऊपर मेरे पास एक व्यापार परत है ... आवेदन की हिम्मत। यह किसी भी विशिष्ट डीएओ कार्यान्वयन से पूरी तरह से अनजान है।
इस बिंदु तक सब कुछ ठीक लगता है, जब तक कि मैं लेनदेन के बारे में सोचना शुरू नहीं करता। यदि ग्राहक को लागू करने के लिए लेनदेन छोड़ दिया जाता है, तो दुनिया में कैसे मैं अपने परतों के बीच अच्छा अलगाव बनाए रखता हूं? यही है, मैं फिलहाल हाइबरनेट का उपयोग कर रहा हूं, और मुझे वास्तव में हाइबरनेट-विशिष्ट लेन-देन को मेरे व्यवसाय स्तर कोड में जोड़ने जैसा महसूस नहीं होता है।
मैं तो यहाँ, शुरू करने, और रोलबैक के तरीकों और मेरे व्यापार परत को एक कार्यान्वयन पारित के साथ एक सरल लेनदेन इंटरफ़ेस बना सकते हैं ... लेकिन ... मुझे यकीन है कि नहीं कर रहा हूँ ...
है चुनौती: क्या आप स्प्रिंग (या ईजेबी, या कोई अन्य अतिरिक्त ढांचा) शब्द का उपयोग किए बिना ऐसा करने के लिए मेरे लिए एक तरीका सुझा सकते हैं?
अच्छा, यह काम करता है, लेकिन आप किसी यथार्थवादी व्यावसायिक ऐप के लिए कोड की हजारों डुप्लिकेट लाइनों के साथ जल्दी से समाप्त होते हैं। –
@Rogerio, किसी व्यापार ऑब्जेक्ट में हर विधि आवश्यक रूप से एक लेनदेन नहीं है। यदि आप डुप्लिकेशन के साथ समाप्त होते हैं, तो हो सकता है कि आपका डोमेन अच्छी तरह से व्यक्त न हो, या आप इसे व्यक्त करने का एक बेहतर तरीका ढूंढ सकें। –
मैंने पीओईएए पुस्तक (71-77) में लेनदेन के बारे में प्रासंगिक पृष्ठों को फिर से पढ़ा है, और लेखक व्यवसाय की समस्या होने के लेनदेन के बारे में ऐसी कोई बात नहीं सलाह देते हैं (वे * व्यापार भाषा का हिस्सा नहीं हैं, बल्कि एक उपकरण *समरूपता नियंत्रण*)। साथ ही, व्यावहारिक रूप से व्यवसाय संचालन में शामिल लगभग हर विधि * सिस्टम लेनदेन के संदर्भ में चलनी चाहिए, भले ही आपके पास आमतौर पर प्रत्येक विधि के लिए अलग लेनदेन न हो। बिंदु बनी हुई है, एक अच्छी तरह से डिज़ाइन किया गया एप्लिकेशन * हर जगह स्पष्ट लेनदेन सीमा कोड नहीं होना चाहिए, बल्कि केवल एक या दो केंद्रीय स्थानों में होना चाहिए। –