定義類的講究
- 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
|--...
說明:
- [controller]
controller是從用戶接受和發送數據的地方。因此controller中返回結果中的數據類型為*VO類型。 - [dao] 那么,
mybatis中mapper中寫的sql語句,如select等的返回結果是什么呢?
可以是entity,可以是DTO。從一張表中查詢部分或多表聯合查詢,就可以返回DTO。
整個*mapper.xml是*DAO對應,其中每個sql語句的返回類型可以是int,List,entity,DTO等。
@RequestMapping(path = "/list", method = RequestMethod.POST)
public Res<**VO> yourmethoed(){
//<*DTO> = service()...
//DTO轉VO,return VO
}
