概念
也成POJO(简单ava对象);实体类的作用是通过单一职责原则而产生的仅完成数据载体一种类,很类似面向过程中的结构体,实体类仅包含私有属性和get、set方法,有时为了方便,实体类包含给属性赋值的构造函数等。PO、DTO、VO均属于实体类范畴。
PO
PO就是持久化对象,数据库中一条记录就可以转换为一个持久化对象,数据库库设计完成后,PO对象即可设计完成,在开发中主要用于数据库的增、删、更新和数据的获取。目前存在很多工具支持通过数据库表生成各种PO对象类。如数据库中包括notice表,包含标题、公告内容、发布时间等字段,就可以生成一个Notice PO对象。代码如下:
public class TSYNOTICE {
private String ID;
private String STITLE;
private String SCONTENT;
private String SFALG;
private String CREATER;
private Date CREATETIME;
public String getID() {
return ID;
}
public void setID(String newID) {
ID = newID;
}
public String getSTITLE() {
return STITLE;
}
public void setSTITLE(String newSTITLE) {
STITLE = newSTITLE;
}
public String getSCONTENT() {
return SCONTENT;
}
public void setSCONTENT(String newSCONTENT) {
SCONTENT = newSCONTENT;
}
public java.lang.String getSFALG() {
return SFALG;
}
public void setSFALG(String newSFALG) {
SFALG = newSFALG;
}
public String getCREATER() {
return CREATER;
}
public void setCREATER(String newCREATER) {
CREATER = newCREATER;
}
public Date getCREATETIME() {
return CREATETIME;
}
public void setCREATETIME(Date newCREATETIME) {
CREATETIME = newCREATETIME;
}
}
VO
ViewObject表现层对象,主要对应界面显示的数据对象,VO对象的设计使得界面显示信息和持久化存储数据结构完全解耦。VO对象设计原则是携带的信息没有任何冗余,不多信息,也不丢失信息。
VO对象设计注意以下问题:
1.VO是否包含表中主键:在界面层将主键显示给用户是没有任何意义的,如果仅用于一次显示完整,无需做其他的任何操作,则VO不包括主键内容。如果需要进行二次查询显示详情或更新数据库的内容则需要包含主键成分。
2.VO是否需要包含详情信息:这个需要根据具体情况而定。如果要显示的内容全部是少量文字,数据传输量不大,则一次提取到VO对象中,由前端进行处理即可。如果包含大文本、图片、多媒体等内容。则需要将这些信息在二次查询中给出,无需包含在VO对象中。
3.VO对象中的属性基本与数据库中字段名保持一致:VO对象中的属性基本无需与数据库中字段名保持一致,但这样转换比较方便。在简单的单表操作中,实体对象等同于VO对象。
DTO
Data Transfer Object数据传输对象,作为数据加工,参数、显示用,多表连接查询和数据库存储过程获取的数据也可以成为DTO。设计时使用时携带的信息没有任何冗余,也不丢失信息,有时使用VO或PO代替。