.model、.domain、.bean、.entity、.vo分层之间的含义

常见SpringBoot或Java Web后端分层时有.model、.domain、.bean、.entity、.vo这几种命名方式,那么这几种命名方式有什么区别及含义呢?

含义:

.model

本意“模型”,实义一次操作的最小单位,原子单位,常用作数据校验。

.domain

本意“域”,“域”在数学意义上即位一组数值对应的所有取值结果。对于数据库而言,一张数据表内字段数量是固定不变的,那么该数据表所有对应的排列组合即为域。当然,还看到了有人是这样定义的:除包含本表基本属性外,还可以包含其它属性。有点绕人?请看示例:

public class Student{

    private int id;
    private String name;
    ...

    public boolean isQualified;
}

请注意isQualified该属性不是改数据表内的属性,是为了某业务逻辑处理而增添的。

.bean

本意即为bean,现在很少看见有人写纯正的bean了,大部分写的都是简化版的(@Data注解除外)。示例如下:

public class BusinessBean implements Serializable{
   
    private int id;
    private String name;

    // 无参构造器
    // 满参构造器
    // 各属性setter、getter方法

    @Override
    pbulic String toString(){
    // toString
    }

    @Override
    public boolean equals(){
    // equals
    }

}

凡是.model、.domain、.entity、.vo层内的类都是满足具备相应的setter、getter方法的。在不考虑严格定义的情况下也可以被称作Java Bean。

.entity

本意“实体”,即数据库中每张数据表与持久层所对应的实体类。这里以Spring Data JPA为例,假设存在一student表,那么该层所存类如下:

@Table
@Entity
public class Student{

    @Id
    private int studentId;

    @Column
    private String name;

    // And so on.

}

.vo

本意“视图对象”,即View Object。常用作由服务端返回给客户端或网页。

public class ResultVO<T> {

    //状态码,比如1000代表响应成功
    private int code;
 
    //响应信息,用来说明响应情况
    private String msg;
    
    //响应的具体数据
    private T data;

    public ResultVO(T data) {
        this(1000, "success", data);
    }

    public ResultVO(int code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
}
上一篇:几个O


下一篇:抖音sdk调用,抖音粉丝或好友收发消息