2011-09-17 12 views
12

के बीच मतभेद सक्रिय रिकॉर्ड पैटर्न और तालिका डेटा गेटवे पैटर्न के बीच मुख्य अंतर क्या हैं या मुख्य अंतर क्या हैं?सक्रिय रिकॉर्ड और तालिका डेटा गेटवे

मैं प्रोग्रामिंग के लिए अपेक्षाकृत नया हूं, अगर यह एक बेवकूफ सवाल है, लेकिन वे मेरे जैसा ही प्रतीत होते हैं।

उत्तर

15

यह उत्तर वास्तव में मेरी व्याख्या की तरह अधिकांश पैटर्न उत्तरों की तरह है, जो मैं कह रहा हूं उनमें से अधिकांश मार्टिन फाउलर की साइट पर Active Record और Table Data Gateway विवरणों पर आधारित है।

कुंजी उद्धरण के बारे में टेबल डाटा गेटवे इस प्रकार हैं:

एक वस्तु है कि एक गेटवे (466) एक डेटाबेस तालिका के रूप में कार्य करता है। एक उदाहरण तालिका में सभी पंक्तियों को संभालता है।

और इस बारे में सक्रिय रिकॉर्ड:

एक वस्तु है कि एक डेटाबेस तालिका या दृश्य में एक पंक्ति लपेटता, समाहित डेटाबेस का उपयोग, और उस डेटा पर डोमेन तर्क कहते हैं।

तो सबसे सरल स्तर पर, तालिका डेटा गेटवे डेटाबेस तालिका को सारणीबद्ध करता है जबकि सक्रिय रिकॉर्ड तालिका से एक पंक्ति लपेटता है।

अन्य महत्वपूर्ण बिंदु जो मैं पढ़ने से लेता हूं वह यह है कि सक्रिय रिकॉर्ड ऑब्जेक्ट्स डोमेन ऑब्जेक्ट्स हैं, जिसका अर्थ है कि आपके डेटाबेस में परिवर्तनों को सहेजने के लिए आप जिस ऑब्जेक्ट को अपडेट करते हैं() वह ऑब्जेक्ट भी है जिसमें व्यवसाय तर्क होता है। टेबल डेटा गेटवे के साथ यह मामला नहीं है, गेटवे आमतौर पर एक परत के रूप में कार्य करेगा जो आपके डेटाबेस कॉल से डोमेन ऑब्जेक्ट्स में आउटपुट का अनुवाद करता है और जब आप उन ऑब्जेक्ट्स में परिवर्तन जारी रखना चाहते हैं तो आप वापस गेटवे पर जाते हैं और बताते हैं बचाने के लिए प्रवेश द्वार।

आखिरकार, तालिका तालिका गेटवे पूरी तालिका पर काम करता है, डिजाइन के संदर्भ में और आप अपने डेटा पहुंच के बारे में कैसा सोचते हैं।

मैंने कभी भी सक्रिय रिकॉर्ड का उपयोग नहीं किया है, लेकिन एक बड़ी परियोजना पर काम किया है जो इसके डिजाइन में टेबल डेटा गेटवे का उपयोग करता है। यह एक ठोस पैटर्न है लेकिन कई लोग कहेंगे कि यह काफी दिनांकित है - आपके सभी डेटा एक्सेस को एक ही स्थान पर रखने के फायदे और आपके डीबीए को डेटाबेस के स्वामित्व की अनुमति देने वाले ओआरएम के नए फायदों से लिया गया है जो डेवलपर्स को अच्छी वस्तु देते हैं विकास के समय और पारस्परिकता के संदर्भ में संबंधित फायदे के साथ डेटा के साथ काम करने के उन्मुख तरीके।

(मैं इस बात पर टिप्पणी करने के लिए वास्तव में उत्सुक नहीं हूं कि उपरोक्त पैराग्राफ में से कितना सच है - मैं बस कुछ समुदाय की राय का प्रतिनिधित्व करने की कोशिश कर रहा हूं। मैं वर्तमान में एक ओआरएम का उपयोग करता हूं लेकिन खुशी से वापस जा सकता हूं गेटवे दृष्टिकोण)

1

एक सक्रिय रिकॉर्ड एक वस्तु है जो संशोधन के तहत एक रिकॉर्ड का प्रतिनिधित्व करती है। ये ऑब्जेक्ट डेटाबेस में ऑब्जेक्ट स्टेटस को सुसंगत रखने में मदद करते हैं। रिकॉर्ड सक्रिय होता है जब आप अपने राज्य में छेड़छाड़ कर रहे होते हैं, और यह एक ही समय में दूसरों को संशोधित करने का मौका से बच जाएगा।

0

इस कार्यान्वयन दोनों
सक्रिय रिकॉर्ड सिर्फ उदाहरण है

class ActiveRecord 
    { 
    protected $connection = null; 

    public function __construct() 
    { 
     $this->connection = new PDO("mysql:host=localhost; dbname=db_userscloud", 'root', ''); 
    } 

    public function loadId($id) 
    { 
     $sql = 'SELECT * FROM blog WHERE id_blog = ' . (int) $id; 
     $result = $this->connection->query($sql); 

     $record = $result->fetch(PDO::FETCH_ASSOC); 

     foreach($record as $column => $value) { 
     $this->$column = $value; 
     } 

    } 
    } 

    $blog = new ActiveRecord(); 
    $blog->loadId(1); 

    echo $blog->id_blog . '<br />'; 
    echo $blog->title_blog; 


तालिका डाटा

class TableData 
    { 
    protected $connection = null; 

    public function __construct() 
    { 
     $this->connection = new PDO("mysql:host=localhost; dbname=db_userscloud", 'root', ''); 
    } 

    public function loadId($id) 
    { 
     $sql = 'SELECT * FROM blog WHERE id_blog = ' . (int) $id; 
     $result = $this->connection->query($sql); 

     return $result->fetch(PDO::FETCH_ASSOC);       
    } 

    $gateway = new TableData(); 
    $blog  = $gateway->loadId(1); 

    echo $blog['id_blog'] . '<br />'; 
    echo $blog['title_blog']; 
संबंधित मुद्दे