एक आदर्श दुनिया में मॉडल में केवल व्यावसायिक तर्क होना चाहिए, यह कुछ वास्तविक वस्तु जैसे कि एक सदन को मॉडल करता है। हालाँकि लगभग सभी परिस्थितियों में मॉडल को अपने डेटा को कुछ स्टोरेज के लिए बनाए रखने की आवश्यकता होती है।
मॉडल और संग्रहीत डेटा के बीच की बातचीत या तो एक अलग डेटा परत पर या सीधे मॉडल में हो सकती है, जो कि ORM (ऑब्जेक्ट रिलेशनल मैपर) का उपयोग करते समय होता है। दूसरे शब्दों में, या तो मॉडल डेटाबेस से सीधे जुड़ता है या इसका डेटा किसी अन्य "डेटा एक्सेस" ऑब्जेक्ट पर जाता है जो डेटाबेस से जुड़ता है।
एक ORM (ऑब्जेक्ट रिलेशन मैपर) डेटाबेस तालिका में आपके मॉडल ऑब्जेक्ट की विशेषताओं को मैप करता है, गेटर्स और सेटर प्रदान करता है। इस मामले में कोई अलग डेटा लेयर नहीं है और मॉडल अपने डेटा को बनाए रखने के लिए सीधे जिम्मेदार है।
यहाँ ActiveRecord
एक लोकप्रिय ORM का उपयोग कर एक रूबी उदाहरण दिया गया है :
class House < ActiveRecord::Base
end
house = House.new
house.price = 120000
house.save
Price
houses
तालिका में एक फ़ील्ड है जो स्वचालित रूप से पता लगाया जाता है ActiveRecord
जिससे ऑब्जेक्ट में एक गेट्टर और सेटर जुड़ जाता है। जब save
मूल्य कहा जाता है तो मूल्य विशेषता डेटाबेस के लिए बनी रहती है।
मेरे दृष्टिकोण से डेटा लेयर होने की समर्थक यह है कि आपको एक ऐसा बिंदु मिलता है जिसमें आप मॉडल में पहुंचने से पहले डेटा में हेरफेर कर सकते हैं, मॉडल को इसकी चिंता कम होती है, इसकी जिम्मेदारियाँ कम होती हैं। उदाहरण के लिए, आपको किसी भी संगत डेटा स्रोत से डेटा को संयोजित करने की आवश्यकता नहीं हो सकती है, यह एक ऐसी चीज है जिसे ORM आसानी से नहीं संभाल सकता।
मुख्य चोर इसके प्रबंधन के लिए अमूर्त की एक और परत है, अगर आपको इसकी आवश्यकता नहीं है, तो परेशान न करें, इसे सरल रखें। कम चलने वाले हिस्से, गलत होने के लिए कम।
I'm not using the database as a simple object store
। मैं अनुमान लगा रहा हूं कि डेटाबेस में कुछ व्यापारिक तर्क हैं, संग्रहीत प्रक्रियाओं के रूप में। MVC के खिलाफ जाने वाले सिद्धांत में, लेकिन व्यवहार में यह कोई मायने नहीं रखता है।