JavaBean、POJO、Entity、DTO、PO、VO、BO、DAO 小鱼儿 2023-06-27 11:30 1阅读 0赞 ## 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); }
还没有评论,来说两句吧...