【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释
VO
value object:值对象
通常用于业务层之间的数据传递,由new创建,由GC回收。
PO
persistant object:持久层对象
对应数据库中表的字段。
VO和PO,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。
DTO
data transfer object:数据传输对象。
表里面有十几个字段:id,name,gender(M/F),age,conmpanyId(如001)...
页面需要展示四个字段:name,gender(男/女),age,conmpanyName(如今日头条股份有限公司)。
DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构。
BO
business object:业务对象
BO把业务逻辑封装为一个对象。
我理解是PO的组合,比如投保人是一个PO,被保险人是一个PO,险种信息是一个PO等等,他们组合起来是第一张保单的BO。
POJO
"Plain Ordinary Java Object",简单普通的java对象。主要用来指代那些没有遵循特定的java对象模型,约定或者框架的对象。
没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。
纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法。(JavaBean中往往会封装一些简单逻辑)
可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。
Bean
JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。大家针对这种规范,总结了很多开发技巧、工具函数。符合这种规范的类,可以被其它的程序员或者框架使用。它的方法命名,构造及行为必须符合特定的约定:
所有属性为private。
这个类必须有一个公共的缺省构造函数。即是提供无参数的构造器。
这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
这个类应是可序列化的。实现serializable接口。
因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。
POJO和Bean两者有什么区别
POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。
POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。
Javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。
POJO:
public class BasicInfoVo {
private String orderId;
private Integer uid;
public String getOrderId() {
return orderId;}
public void setOrderId(String orderId) {
this.orderId = orderId;}
public Integer getUid() {
return uid;}
public void setUid(Integer uid) {
this.uid = uid;
}}
Bean:
public class UserInfo implements java.io.Serializable{
//实现serializable接口。
private static final long serialVersionUID = 1L;
private String name;
private int age;
//无参构造器
public UserInfo() {
}
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public int getAge() {
return age; }
public void setAge(int age) {
this.age = age; }
//javabean当中可以有其它的方法
public void userInfoPrint(){
System.out.println("");
} }
DAO
data access object:数据访问对象
主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。
entity
实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。
负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
来自:https://www.cnblogs.com/aurum324/p/8167996.html
https://www.cnblogs.com/aiyowei/p/10443161.html