2010-04-03 93 views
4

我正在處理一些可以創建,讀取,更新和刪除的數據實體,並且我發現自己爲它們編寫了或多或少的相同代碼。例如,我需要有時將數據輸出爲JSON,有時以表格格式輸出。我發現自己寫了2種不同類型的視圖來導出數據。此外,在DB內創建這些實體通常僅通過SQL語句和輸入參數而不同。CRUD有什麼好的設計模式?

我想創建一個戰略模式來表示不同的「背景」。例如,AJAX上下文的read()方法將以JSON形式返回數據。但是,我想知道其他人是否事先處理了這個問題,並且想知道CRUD操作通常使用哪些設計模式。

編輯:有一點需要注意的是有時使用複合實體來組成一個整體;例如,一個位置可以有很多描述,每個支持的語言都有一個描述。

回答

2

CRUD沒有單一模式,有很多重疊/競爭模式。其中對這些CRUD模式的最佳來源是:

Martin Fowler's Patterns of Enterprise Application Architecture

一般情況下,解決這個特殊問題的最佳方法是使用ORM(假設關係數據存儲,這似乎是在這一個安全的假設情況下):

http://en.wikipedia.org/wiki/Object-relational_mapping

至於通過視圖暴露你的對象,還有的框架存在,以幫助與爲好,但這些框架是特定的編碼環境,你沒有指定。

+0

福勒的網站似乎目前正在關閉。 – 2010-04-03 12:11:47

+0

哪種模式或ORM? – 2017-08-16 17:43:18

0

檢查ODATA(http://www.odata.org) - 對於CRUD over HTTP具有相當不錯的設置 - 包括將批量更新推送到服務器的機制。

1

不是一個模式答案 - 抱歉。但我會建議使用ORM系統(存儲庫模式)作爲數據庫接口。 JPA,Hibernate,iBatis等。您不需要再編寫任何SQL。

如果您想盡量減少必須編寫的代碼量,請嘗試一個框架,如Grails。 (用大約30行代碼寫一個完整的CRUD網站。)您不需要再編寫任何樣板代碼。