java架構之項目結構(entity / DTO / VO)


定義類的講究

  • ejb

Enterprise JavaBean(EJB),企業javaBean。是java的核心代碼,分別是會話Bean(Session Bean)、實體Bean(Entity Bean)、和消息驅動Bean(MessageDriven Bean)。

  • javaBean

可重用組件,類必須是具體的公開的,具有無參構造器。

  • pojo

Plain Ordinary Java Object,簡單的Java對象,普通的javaBean。除了getter、setter,不能有其他業務方法。有時可以作為VO(value-object)或DTO(Data Transfer Object)來使用。


  • entity

持久化,與數據庫對應;

實體bean,一般是用於ORM對象關系映射,一個實體映射成一張表,一般無業務邏輯代碼。

負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創建一個EntityBean對象相當於創建一條記錄,刪除一個EntityBean對象會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。

  • DTO

系統、服務之間交互傳輸用;

數據傳輸對象(Data Transfer Object

dto是做表示層(展示給用戶)的,而實體是數據對象(表)。表示層dto的是由多個實體構成,或一個實體的一個部分,或多個實體的各個部分的結合體?如果你認為dto沒有必要,難道你做數據庫的時候,表與頁面的展示是一摸一樣的嗎?不太現實吧。

dto是面向對象的,實體是面向關系數據庫。

  • VO(和DTO類似)

前台(APP\WAP\PC)展示用;

作用說明:
1、DTO可以增加或者減少entity的字段,來靈活實現信息傳遞;
2、VO可以僅向前端傳輸,頁面需展示字段,如pageList等。


關系示例

多模塊或單模塊的項目而言,清晰的項目結構很重要。

如下,一個項目可以分為許多模塊,如common模塊和其他模塊。

project
  |-- common
  |-- module1
  |-- ...

其中
|-- common
           |--dao
                 |--impl
                 |--*DAO.java
           |--dto
                 |--*DTO.java
           |--domain
                 |--entity
                 |--*Entity.java

可以在resources中單獨寫mapper.xml


|-- module1
           |--model
                 |--*VO.java
           |--controller
           |--service
           |--interceptor
           |--...

說明:

  1. [controller] controller是從用戶接受和發送數據的地方。因此controller中返回結果中的數據類型為*VO類型。
  2. [dao] 那么,mybatismapper中寫的sql語句,如select等的返回結果是什么呢?
    可以是entity,可以是DTO。從一張表中查詢部分或多表聯合查詢,就可以返回DTO

整個*mapper.xml*DAO對應,其中每個sql語句的返回類型可以是intListentityDTO等。

@RequestMapping(path = "/list", method = RequestMethod.POST)
public Res<**VO> yourmethoed(){
    //<*DTO> = service()...
    //DTO轉VO,return VO
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM