आज मैं अपने संगठन के किसी अन्य डेवलपर के साथ एक गर्म बहस में पड़ गया कि डेटाबेस मैप्ड क्लासेस के तरीकों को कहाँ और कैसे जोड़ा जाए। हम उपयोग करते हैं sqlalchemy
, और हमारे डेटाबेस मॉडल में मौजूदा कोड बेस का एक बड़ा हिस्सा वर्ग नाम के साथ मैप किए गए गुणों के बैग से थोड़ा अधिक है, डेटाबेस टेबल से अजगर वस्तुओं तक लगभग यांत्रिक अनुवाद।
तर्क में, मेरी स्थिति यह थी कि ओआरएम का उपयोग करने का प्राथमिक मूल्य यह था कि आप मैप किए गए वर्गों में निम्न स्तर के व्यवहार और एल्गोरिदम संलग्न कर सकते हैं। मॉडल पहले कक्षाएं हैं, और दूसरे लगातार (वे एक फाइलसिस्टम में xml का उपयोग करके लगातार हो सकते हैं, आपको देखभाल करने की आवश्यकता नहीं है)। उनका विचार था कि कोई भी व्यवहार "व्यावसायिक तर्क" है, और यह आवश्यक रूप से कहीं भी है लेकिन लगातार मॉडल में है, जो केवल डेटाबेस दृढ़ता के लिए उपयोग किया जाना है।
मुझे निश्चित रूप से लगता है कि व्यावसायिक तर्क क्या है , के बीच एक अंतर है, और इसे अलग किया जाना चाहिए, क्योंकि इसमें निम्न स्तर से कुछ अलगाव है कि इसे कैसे लागू किया जाता है, और डोमेन तर्क, जो मुझे लगता है कि मॉडल कक्षाओं द्वारा प्रदान की गई अमूर्तता है पिछले पैराग्राफ में इसके बारे में तर्क दिया गया था, लेकिन मुझे उस समय अपनी उंगली डालने में मुश्किल हो रही है। मुझे इस बात की बेहतर जानकारी है कि एपीआई क्या हो सकता है (जो, हमारे मामले में, HTTP "रेस्टफुल" है), इसमें उपयोगकर्ता एपीआई को उस चीज से आह्वान करते हैं , जो वे करना चाहते हैं , जो उन्हें करने की अनुमति दी जाती है, और इससे कैसे। हो जाता है।
tl; dr: ओआरएम का उपयोग करते समय मैप किए गए वर्ग में किस तरह की चीजें या एक विधि में जाना चाहिए, और क्या छोड़ना चाहिए, अमूर्तता की एक और परत में रहने के लिए?