2011-05-06 80 views

回答

2

主要區別在於DTO在設計上並沒有任何業務邏輯。他們只是數據結構。例如:您可能有一個存儲「用戶」的數據庫,如果使用DTO,則可以使用UserBean來存儲和檢索用戶對象。但是,您的業務邏輯可能有一個User對象(可能從bean派生,更可能通過聚合使用bean),該對象不僅包含數據,還包含User可以執行的其他方法。

+0

@hari:DTO?通常,是的。 – 2011-07-26 14:08:43

0

我相信這應該是真實的:

assertTrue(POJO == DTO) 

約DTO唯一特別的是,他們不應該包含任何行爲。

0

1,類對象可能包含太多對其他對象的引用,因此太大而無法序列化以進行傳輸。 DTO只選擇有趣的部分,這可以是性能增益。 2,在Hibernate中,實體對象可能包含延遲初始化的引用,這些對象需要使用會話上下文來進行初始化。這些實體對象看起來像「智能對象」,DTO在這裏將這些「智能對象」轉換爲「普通對象」,因爲當會話上下文不再存在時,傳送「智能對象」是沒有意義的。我個人不喜歡DTO,它引入了另一層冗餘,但有時(特別是使用Hibernate ORM時),我離不開它。

0

一個DTO類是普通的Java類與剛特殊的含義 - 就像一個觀察,一個型號。該名稱來自核心J2EE設計模式(傳輸對象模式),該模式提出了在數據庫和基於Java類的模型之間傳輸信息的常用方法。

簡而言之,DTO是一個java類,其中類名映射到數據庫表名,每個數據庫列映射到類屬性。然後它包含getter和setter方法。

下面是對(Data) Transfer Object pattern的一種解釋。

相關問題