2012-07-04 83 views
9

將hibernate實體直到表示層是否是一種很好的做法?或者我們是否需要將實體的所有屬性映射到值對象,並將值對象用於UI?Hibernate DTO和值對象映射

請讓我知道這兩個appoaches的優點和缺點。

我們什麼時候該用什麼?

+1

DTO和值對象是相同的東西。 DTO的意思是*數據傳輸對象*。持久化的Hibernate對象被稱爲*實體*。 –

回答

13

你所謂的DTO是ORM中的實體。它們通常是包含業務邏輯的域模型的一部分,並且大部分時間包含的數據多於呈現單個視圖所需的數據。我個人的經驗法則

在視圖中使用單位當在DAL和視圖之間沒有傳輸層和幾乎沒有什麼商業邏輯:

  • 優點:
    • 一個模型
    • 無需映射模型
    • 更容易使用延遲加載
  • 缺點:
    • 模型中的每個改變裝置的意見變化
    • 與轉移層許多disadvatages見下文

地圖實體DTO的時,有一個傳輸層和/或視圖數據與實體不同或聚集許多不同實體

  • 個優點:
    • 的DTO /視圖不必須改變的時候有改動的車型在其中有問題的負載(延遲加載異常,送多少不需要的數據,暴露敏感信息電線
    • 避免發送實體。 ..)
    • 模型有更少的職責(序列化),使他們更容易重用(例如。後端處理)
  • 缺點:
    • 更多的類來寫
    • 代碼實體轉化爲DTO的
0

您也可能會獲得更多的性能和內存的使用效率如果你在不同的層和模塊中暴露你的實體。這完全取決於你走哪條路,但我從來沒有見過企業甚至中等規模的應用程序,它們暴露了實體以外的數據服務項目/層。