zoukankan      html  css  js  c++  java
  • 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类似)

    前台(APPWAPPC)展示用;

    作用说明:
    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
    }
  • 相关阅读:
    Return Largest Numbers in Arrays
    Title Case a Sentence
    Find the Longest Word in a String
    Check for Palindromes
    Factorialize a Number
    Reverse a String
    nodejs使用场景
    居中div,居中浮动的元素
    WebSocket解释及如何兼容低版本浏览器
    HTML5的离线储存
  • 原文地址:https://www.cnblogs.com/jpfss/p/9947811.html
Copyright © 2011-2022 走看看