前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >PO、VO、BO、DO、DAO、DTO、POJO

PO、VO、BO、DO、DAO、DTO、POJO

作者头像
默 语
发布2024-11-20 12:52:10
发布2024-11-20 12:52:10
11500
代码可运行
举报
文章被收录于专栏:JAVA
运行总次数:0
代码可运行
PO、VO、BO、DO、DAO、DTO、POJO

博主 默语带您 Go to New World.个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥


💭 摘要:

在软件开发领域,有许多用于表示不同概念的缩写,如PO、VO、BO、DO、DAO、DTO和POJO。这些术语在代码设计和架构中起着重要作用,有助于在不同层次和模块之间进行清晰的数据传递和处理。

💭 引言:

随着软件系统的复杂性不断增加,开发人员面临着更有效地组织和管理代码的挑战。为了应对这种挑战,各种缩写术语应运而生,用于描述不同类型的数据对象和操作。本文将探讨PO、VO、BO、DO、DAO、DTO和POJO等术语的含义以及它们在软件开发中的应用

💭 配置方法:

在许多应用程序中,为了实现清晰的分层架构和数据交互,开发人员常常使用这些术语来命名不同的类和对象。通过明确定义每个术语代表的含义,开发团队可以更好地协作,确保代码的一致性和可维护性。

💭 配置步骤:

在实际编码过程中,将这些术语应用到项目中需要遵循一定的规范。例如,PO(持久化对象)通常用于表示与数据库交互的对象,VO(值对象)用于传递简单的值,BO(业务对象)处理业务逻辑,DO(领域对象)表示领域模型,DAO(数据访问对象)处理数据访问,DTO(数据传输对象)管理数据传输,而POJO(普通旧Java对象)则是简单的Java对象。


💖PO - 持久化对象(Persistent Object)

持久化对象(PO)用于表现数据库中的实体或表的映射,通常与数据库表的结构和字段一一对应。PO的属性直接对应数据库表的字段,使得存储、读取、更新和删除等持久化操作变得简便。

代码语言:javascript
代码运行次数:0
复制
public class UserPO {
    private Long id;
    private String username;
    private String email;
    // ... 省略其他属性和方法
}

💖VO - 值对象(Value Object)

值对象(VO)用于封装数据,并通常是不可变的。它专注于传递数据,不包含业务逻辑,可用于前后端数据传递。

代码语言:javascript
代码运行次数:0
复制
public class AddressVO {
    private String street;
    private String city;
    private String postalCode;
    // ... 省略其他属性和方法
}

💖BO - 业务对象(Business Object)

业务对象(BO)用于封装业务逻辑和操作,其中包含了与业务相关的方法和属性。BO负责实现业务规则和操作。

代码语言:javascript
代码运行次数:0
复制
public class OrderBO {
    private List<Item> items;
    
    public void calculateTotalPrice() {
        // 计算订单总价逻辑
    }
    // ... 省略其他属性和方法
}

💖DO - 数据对象(Data Object)

数据对象(DO)用于表示领域模型中的实体和业务概念,与业务领域紧密相关。DO包含了业务规则和操作,通常与BO和PO相对应。

代码语言:javascript
代码运行次数:0
复制
public class ProductDO {
    private Long id;
    private String name;
    private double price;
    // ... 省略其他属性和方法
}

💖DAO - 数据访问对象(Data Access Object)

数据访问对象(DAO)用于封装对数据库的访问操作,提供增删改查等操作的接口。它可以隐藏数据库实现细节,将业务逻辑层与数据库解耦。

代码语言:javascript
代码运行次数:0
复制
public interface UserDao {
    UserPO getById(Long id);
    void save(UserPO user);
    // ... 省略其他方法
}

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

数据传输对象(DTO)用于在不同层之间传输数据,以优化性能并减少网络通信开销。DTO可以封装多个对象的数据,以减少网络请求次数。

代码语言:javascript
代码运行次数:0
复制
public class OrderDTO {
    private List<Item> items;
    private double totalAmount;
    // ... 省略其他属性和方法
}

💖POJO - 普通Java对象(Plain Old Java Object)

POJO是简单的Java对象,没有特定的限制和约束,是普通的Java类。它不依赖于特定框架或接口,常用于表示领域模型、数据对象或其他业务对象。

代码语言:javascript
代码运行次数:0
复制
public class Student {
    private String name;
    private int age;
    // ... 省略其他属性和方法
}

注意事项: 在使用这些术语时,开发人员应该明确每个术语的职责和用途,避免混淆和不必要的复杂性。同时,保持一致的命名规范和设计原则对于整个团队的协作至关重要。

💖总结:

在现代软件开发中,PO、VO、BO、DO、DAO、DTO和POJO等术语代表了不同类型的数据对象和操作,它们有助于实现清晰的代码架构和模块化设计。通过准确使用这些术语,开发团队可以更好地协作,提高代码的可维护性和可读性。


💞 案例DEMO

代码语言:javascript
代码运行次数:0
复制
// 持久化对象(PO)
public class UserPO {
    private Long id;
    private String username;
    private String email;
    // ... 省略其他属性和方法
}

// 值对象(VO)
public class AddressVO {
    private String street;
    private String city;
    private String postalCode;
    // ... 省略其他属性和方法
}

// 业务对象(BO)
public class OrderBO {
    private List<Item> items;

    public double calculateTotalPrice() {
        double total = 0;
        for (Item item : items) {
            total += item.getPrice();
        }
        return total;
    }
    // ... 省略其他属性和方法
}

// 数据对象(DO)
public class ProductDO {
    private Long id;
    private String name;
    private double price;
    // ... 省略其他属性和方法
}

// 数据访问对象(DAO)
public interface OrderDao {
    void save(OrderPO order);
    OrderPO getById(Long id);
    // ... 省略其他方法
}

// 数据传输对象(DTO)
public class OrderDTO {
    private List<ItemDTO> items;
    private double totalAmount;
    // ... 省略其他属性和方法
}

// POJO
public class Item {
    private String name;
    private double price;
    // ... 省略其他属性和方法
}

public class Main {
    public static void main(String[] args) {
        // 创建一个订单业务对象
        OrderBO orderBO = new OrderBO();
        
        // 创建一些产品数据对象
        ProductDO product1 = new ProductDO(1L, "Product A", 10.0);
        ProductDO product2 = new ProductDO(2L, "Product B", 15.0);
        
        // 创建一些订单项
        Item item1 = new Item("Product A", 10.0);
        Item item2 = new Item("Product B", 15.0);
        orderBO.addItem(item1);
        orderBO.addItem(item2);
        
        // 计算订单总价
        double totalAmount = orderBO.calculateTotalPrice();
        
        // 创建订单DTO并填充数据
        OrderDTO orderDTO = new OrderDTO();
        orderDTO.setItems(orderBO.getItemsAsDTO());
        orderDTO.setTotalAmount(totalAmount);
        
        // 保存订单数据
        OrderDao orderDao = new OrderDaoImpl();
        orderDao.save(orderDTOToPO(orderDTO));
        
        // 通过订单ID查询订单
        OrderPO orderPO = orderDao.getById(1L);
        System.out.println("Fetched Order: " + orderPO);
    }
}

💞 参考资料:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PO、VO、BO、DO、DAO、DTO、POJO
  • 💭 摘要:
  • 💭 引言:
  • 💭 配置方法:
  • 💭 配置步骤:
  • 💖PO - 持久化对象(Persistent Object)
  • 💖VO - 值对象(Value Object)
  • 💖BO - 业务对象(Business Object)
  • 💖DO - 数据对象(Data Object)
  • 💖DAO - 数据访问对象(Data Access Object)
  • 💖DTO - 数据传输对象(Data Transfer Object)
  • 💖POJO - 普通Java对象(Plain Old Java Object)
  • 💖总结:
  • 💞 案例DEMO
  • 💞 参考资料:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档