回答
這個答案就像大多數模式答案真的只是我的解釋,我說的大部分是基於Martin Fowler網站上的Active Record和Table Data Gateway描述。
密鑰引號這大約表數據網關:
充當網關(466)到一個數據庫表中的一個對象。一個 實例處理表中的所有行。
而這大約活動記錄:
在一個數據庫中的表或視圖包裝了一個行的對象,封裝 數據庫訪問,以及在該數據添加域邏輯。
因此,在最簡單的級別上,Table Data Gateway將數據庫表抽象出來,而Active Record將表中的一行包起來。
我從閱讀中得出的另一個關鍵點是活動記錄對象是域對象,這意味着您調用Update()以保存數據庫更改的對象也是包含業務邏輯的對象。對於表數據網關,情況並非如此,網關通常充當將數據庫調用的輸出轉換爲域對象的層,並且當您想要將更改保存到這些對象時,將其傳遞迴網關並告訴網關保存。
最後,Table Data Gateway在整個表上工作的這一事實在設計和您對數據訪問的看法方面很重要。
我從來沒有特別使用過活動記錄,但曾在一個使用Table Data Gateway的大型項目中進行過設計。這是一個穩定的模式,但很多人會說它已經過時了 - 將所有數據訪問保存在一個地方並允許DBA擁有數據庫的好處已經被ORM的新優勢所取代,這些優勢爲開發人員提供了良好的對象在開發時間和透明度方面具有相應優勢的面向數據處理方法。 (我並不真的熱衷於評論上述段落的多少是正確的 - 我只是想表達一些社區意見,我目前使用ORM,但也可以愉快地回到網關方式)
活動記錄是表示正在修改的記錄的對象。這些對象有助於保持數據庫中的對象狀態一致。當您操作其狀態時,該記錄處於活動狀態,這將避免其他人同時修改它的機會。
這是實現雙方
活動記錄只是例子
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'];
- 1. 瀏覽器和控制檯之間的活動記錄差異
- 2. AppCompatActivity和活動之間的差異
- 3. 給定時間戳上的多個活動記錄對象之間的差異
- 4. 網站之間的差異Facebook登錄和移動Web選項
- 5. 數據之間的差異
- 6. 數據庫中的計數記錄和計數器變量之間的差異
- 7. Wf 4接收活動:消息和參數之間的差異
- 8. 計算兩個記錄之間差異(時間)的總和 - mssql
- 9. 差異同步活動ANS異步活動之間
- 10. 在mongodb和活動記錄之間創建關聯
- 11. 同一表中兩條記錄之間的字段值差異
- 12. python日誌記錄:2.6和2.7之間的差異
- 13. 日誌和記錄器之間的差異?
- 14. MySQL:關聯和不關聯表之間的差異
- 15. 活動頁面和背景頁面之間的差異
- 16. AWS IoT中設備網關和MQTT代理之間的差異
- 17. UIView和UIButton之間的動畫差異
- 18. 選擇28天之間的記錄計數差異
- 19. 計算數據表和臨時存儲之間的差異
- 20. GSI和表格之間的差異
- 21. Topojson:v0和v1之間的差異列表?
- 22. /和/ **之間的差異
- 23. PHP之間的差異()和[]
- 24. '//'和'///'之間的C++差異
- 25. VBA:&和+之間的差異
- 26. 之間的差異和::: ++
- 27. 活動和片段之間的數據
- 28. 找出數據點之間的差異
- 29. NoSQL數據庫之間的差異
- 30. 記錄之間的時間差