常见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;
}
}