关于实体类属性创建的问题

个人在平时学习的时候
如果碰到一对一或者一对多的表关系
在创建实体类的时候都会直接套用其他实体类
例如:一个班级有一个Teacher和多个学生
CSDN不让用中文 用英文
班级

//班级类
public class schoolClass{
  private String className;
  private Teacher teacher;
  private List<Student> students;
}

学生

public class Student{
  private String name;
  private int age;
  private String sex;
}

Teacher

public class Teacher{
  private String name;
  private int age;
  private String money;
}

但是工作后发现公司中的实体类都是单纯的属性
例:
班级

//班级类
public class schoolClass{
  private String pkClassId;
  private String fkTeacherId
  private String className;
}

学生

public class Student{
  private String studentId;
  private String fkClassId;
  private String name;
  private int age;
  private String sex;
}
**Teacher**
```java
public class Teacher{
  private String pkTeacherId;
  private String fkClassId;
  private String name;
  private int age;
  private String money;
}

虽然实现功能上都是一样的,但是如果想获取多个属性的话就需要创建一个VO来封装对象,希望有人给解释一下

对象的概念就是这样的。你不能把业务和对象混合在一起。vo可以理解为一个中间桥梁,符合开发的规范性。
VO:值对象(Value Object),通常用于业务层之间的数据传递,和Entity一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。
VO:表现层对象(View Object),主要对应展示界面显示的数据对象,用一个VO对象来封装整个界面展示所需要的对象数据。

一般是数据库一张表对应一个实体类,需要别的属性,就像你说的一样,在创建一个实体类来封装。
你是想问这样做的好处吗?个人见解:

  1. 方便对数据库表的操作,orm把数据库表映射为了java bean,直接操作bean就行了,符合面向对象的思想
  2. 有对应的工具来生成这些bean,你无需编写这些代码
  3. 本身在返回给前端数据的时候,就不会使用这个bean来返回,这样会暴露你后端表的结构,而应该自行封装一个对象来返回给前端,把不需要的数据去除,需要的数据添加进来。

VO可以理解为数据传输对象
用于表现层和应用层之间的数据交互简单来说Model面向业务,我们是通过业务来定义Model的。而VO是面向界面UI,是通过UI的需求来定义的。 通过VO我们实现了表现层与Model之间的解耦,表现层不引用Model