2013-07-05 35 views
2

我們有一個REST後端,它與模型類一起工作,以封裝API調用的數據。此時我們使用相同的模型類將數據映射到數據庫中。爲數據庫模型重新使用API​​模型的設計規則

因爲它可以避免複製從API域到DB域的數據,存在一些問題這種方法:

  • 帶來了安全風險,因爲你需要的是明確掩蓋過場不允許直接從易於遺忘的API中設置。
  • API模型類與應該通過API提供服務的特定於DB域的成員「有關」。
  • 在不改變(意外)API模型的情況下重構數據庫層變得更加困難。

另一方面,複製時出現:

  • 與返回的(大)名單的問題。
  • 忘記從API域複製(新)屬性到數據庫域,反之亦然。

我不知道是否有一個設計規則說這件事。

回答

1

那麼你可以做的是從你的數據傳輸對象(即使用DTO模式)分離你的業務實體(你寫入數據庫的模型)。所以,你必須在到底是什麼:

  1. 的DTO這是隻爲你那容器是從讀取輸入數據,其餘
  2. 業務邏輯來的數據,使得一些操作它,並把它轉換成實體,這些將通過DAO或其他方式寫入/讀取到數據庫中。
  3. 代表您的數據庫模型的模型實體。

這樣至少可以實現顧慮(安全性,api更改,數據傳輸)的分離。

現在,這是生活中的所有東西(除了啤酒:))有其負面影響: 例如,您得到重複的代碼(您必須從dto中的db實體複製模型),這可能會產生一些開銷。

希望有所幫助。 不知道你用什麼語言,但這裏有一個例子在java中: http://www.oracle.com/technetwork/java/transferobject-139757.html

+0

好的,這意味着我們的後端我們有2套DTO的:一個用於API域,另一個用於數據庫。我更喜歡上面的(微小的)優化的分離(不太容易出錯),這樣纔有意義,謝謝! – Pepster