2013-01-16 1024 views
69

1)爲什麼我們使用DTODAO,我們什麼時候應該使用它們。我正在開發一個用於插入,編輯,刪除數據的GUI Java軟件。但我努力區分DTO/DAOModel,View,Controller(MVC)結構?它們是否相似?在通過Java GUI與數據庫交互時使用它們更好。DTO和DAO概念和MVC

2)我真的很好奇的一件事是,在一個班級中是否有viewController是一個好習慣。如果我們考慮Netbeans,您可以創建GUI框架類,並在框架中添加如JButton等組件,雙擊該按鈕將轉到actionListener方法(控制器),該方法顯示在框架中,數據將顯示給用戶(View)。所以他們在同一班。那麼這完全違背了這個概念嗎?

<a href="http://www.youtube.com/watch?v=Iwwznm9XSME">Here is what Im talking about</a> 

不好的做法有一個類的視圖和控制器?

+0

你在哪裏使用DTO? –

+0

@RomanC有一個包含Events(eventId,name,date.etc)的數據庫表,所以DTO和MVC可以相同還是不同? – Hoody

+0

在數據庫中,您沒有DTO但有數據庫對象。 –

回答

153

DTO是Data Transfer Object的縮寫,因此它用於在應用程序的類和模塊之間傳輸數據。 DTO應該只包含數據,getter,setter和構造函數的私有字段。不建議將業務邏輯方法添加到這些類,但可以添加一些util方法。

DAO是數據訪問對象的縮寫,所以它應該封裝用於檢索,保存和更新數據存儲(數據庫,文件系統等)數據的邏輯。下面是DAO和DTO界面如何的示例:

interface PersonDTO { 
    String getName(); 
    void setName(String name); 
    //..... 
} 

interface PersonDAO { 
    PersonDTO findById(long id); 
    void save(PersonDTO person); 
    //..... 
} 

MVC是一個更寬的模式。 DTO/DAO將成爲您MVC模式中的模型。它告訴你如何組織整個應用程序,而不僅僅是負責數據檢索的部分。對於第二個問題,如果你有一個小應用程序,它是完全可以的,但是如果你想遵循MVC模式,最好有一個單獨的控制器,它將包含你的框架的業務邏輯一個單獨的類並從事件處理程序向這個控制器發送消息。這會將您的業務邏輯從視圖中分離出來。

+0

第一個問題是關於DTO/DAO與MVC的區別,我想。 – madth3

+0

大概我誤解了這個問題。 – Petr

+0

如果我想添加觸發器來啓用/禁用像PersonDAO.save()這樣的東西,我會直接將它放在save()方法中嗎?另外,對於數據庫性能計數器,我是否會將定時器直接添加到'save()'方法中?另外,在PersonDTO裏面有PersonDAO ref是否可以接受? – BenR