हमारे आवेदन में तीन परतें हैं। एक बाहरी एपीआई प्रदान करने के लिए सेवा परत। हमारे व्यापार तर्क के लिए बीओ परत, और हमारे डेटाबेस कनेक्शन के लिए एक डीएओ परत।
मान लीजिए कि हर बार जब हम किसी फ़ाइल को अपडेट करते हैं, तो हम फ़ोल्डर में कुछ बदलना चाहते हैं, उदाहरण के लिए 'अंतिम संशोधित तिथि'। यह एक लेनदेन में किया जाना चाहिए। या तो यह सफल होता है और फाइल और फोल्डर दोनों को संपादित किया जाता है। या विफलता है और लेनदेन वापस लुढ़का हुआ है, इसलिए दोनों वस्तुएं पिछली स्थिति में हैं।
"एक फ़ोल्डर संपादित करें जब एक फ़ाइल संपादित हो जाती है" -चुनाव विशुद्ध रूप से व्यावसायिक तर्क है। तो इसका मतलब यह है कि यह बीओ-परत में है। हालाँकि, हम अपने डेटाबेस के लिए Objectify का उपयोग करते हैं, इसलिए लेन-देन शुरू करने के लिए हमें toy ()। Transact (...) की आवश्यकता होती है। अगर हम इस फ़ंक्शन को BO लेयर में कहते हैं, तो यह हमारे डिज़ाइन को तोड़ देता है क्योंकि हमारे Business लेयर में डेटाबेस विशिष्ट कॉल (Objectify) होंगे।
इस समस्या के लिए एक स्वच्छ समाधान क्या होगा?
FileBO
कॉल नहीं कर सकतेFolderBO.edit(newDate)
?