JavaBean、POJO、Entity、DTO、PO、VO、BO、DAO

POJO(Plain Ordinary Java Object)

简单的Java对象,POJO类中有属性和get、set方法,但是没有业务逻辑。有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。

JavaBean

JavaBean是一种Java语言写成的可重用组件,是符合一定规范编写的Java类,不是一种技术,而是一种规范。javaBean可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本。

POJO和JavaBean的区别

POJO就是比JavaBean更纯洁的简单类或接口,POJO严格遵循简单对象的概念,而JavaBean往往会封装一些简单逻辑。
POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。

Entity

实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。
负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

DTO(Data Transfer Object)数据传输对象

举个例子
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。

PO(persistant object)持久对象

为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。

VO(Value Object、View Object)值对象或者View对象

为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。

BO(Business Object)业务对象

POJO在业务层的体现,对于业务操作来说,更多的是从业务上来包装对象,如一个User的BO,可能包括name, age, sex, privilege, group等,这些属性在数据库中可能会在多张表中,因为每一张表对应一个PO,而我们的BO需要这些PO组合起来(或说重新拼装)才能成为业务上的一个完整对象。

DAO(data access object)数据访问对象

主要用来封装对数据的访问,DAO中包含了各种数据库的操作方法。

举例

POJO到PO:

@GetMapping(value="/adduser")
public void addUser() {
    User user = new User(); //初始化一个POJO,或者entity
    
    user.setUsername("张三");
    user.setAddress("北京");
    user.setBirthday(new Date());
    user.setIsDelete("0");
    user.setSex("M");
    
    userMapper.insert(user); //调用insert方法进行持久化,保存进数据库,变为PO,代表一条表数据
}

POJO到VO:

@RequestMapping(value = "/mainpage")
public  String mainPage(Model model){
    User user = userMapper.selectByPrimaryKey(1);    //调用DAO层的方法拿到一个POJO
    model.addAttribute("userInfo", user);			 //绑定到userInfo,变为一个VO
    return "index";
}

DTO:

@Data
public class User {
    private Integer id;

    private String username;

    private Date birthday;

    private String sex;

    private String address;

    private String isDelete;
}

DAO:

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}
发布了243 篇原创文章 · 获赞 87 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/IT_10/article/details/103859887