首页 > 编程语言 >java中VO ,O/R Mapper,PO,VO与PO区别,BO ,POJO,DAO,DTO,TO.QO,D

java中VO ,O/R Mapper,PO,VO与PO区别,BO ,POJO,DAO,DTO,TO.QO,D

时间:2024-12-16 18:58:02浏览次数:11  
标签:Mapper String 对象 Object private VO public PO

一.对象分类:

  1. VO(View Object)视图对象

    • 用于展示层,通常是Web页面,它从业务模型(BO)中取得数据并将数据展示给用户。VO通常包含了页面所需的所有数据,但不包含业务逻辑。
  2. O/R Mapper(Object/Relational Mapping)对象/关系映射

    • 这是一种程序设计技术,用于将对象模型映射到关系数据库模型上。它允许开发者用对象的方式来操作数据库,而不是直接编写SQL语句。
  3. PO(Persistant Object)持久对象

    • 与数据库表结构一一对应的对象,通常用于数据持久层,直接与数据库交互。PO包含数据库表的所有字段,但不包含业务逻辑。
  4. VO与PO区别

    • VO主要面向展示层,用于数据的展示,而PO主要面向数据持久层,用于数据的存储和检索。VO可以包含一些业务逻辑,而PO则不包含业务逻辑,只包含数据字段。
  5. BO(Business Object)业务对象

    • 封装业务逻辑的对象,它直接与业务逻辑层交互,可以包含业务规则和业务流程。BO通常由多个PO组成,或者是一个VO的业务逻辑增强版。
  6. POJO(Plain Old Java Object)简单老式Java对象

    • 这是一个没有遵循任何特定Java EE规范的普通Java对象。POJO通常用于表示业务对象,它们简单、轻量,没有侵入性。
  7. DAO(Data Access Object)数据访问对象

    • 用于封装数据访问逻辑的对象,通常用于访问数据库。DAO提供了一组方法来访问和操作数据库,如增加、删除、修改和查询数据。
  8. DTO(Data Transfer Object)数据传输对象

    • 用于不同层次或不同服务之间传输数据的对象。DTO通常用于远程调用,如Web服务或分布式系统中,它封装了传输的数据。
  9. TO(Transfer Object)传输对象

    • 与DTO类似,TO也是用于不同层次或系统间数据传输的对象。在某些上下文中,TO和DTO可以互换使用。
  10. QO(Query Object)查询对象

    • 用于封装查询条件和规则的对象,通常用于接收前端传递的查询参数,并构建数据库查询。
  11. DO(Domain Object)领域对象

    • 代表业务领域的对象,通常包含业务逻辑和数据。DO是业务模型的核心,它反映了业务领域中的实体和规则。

      这些对象在软件架构中扮演不同的角色,它们帮助开发者将业务逻辑、数据访问和数据展示分离,以提高代码的可维护性和可扩展性。


二.举例分析

  1. VO(View Object)视图对象

    public class BookVO {
        private String title;
        private String author;
        private double price;
        private int stock;
    
        // getters and setters
    }
    • 假设我们有一个在线书店,VO可能是一个BookVO类,它包含书名、作者、价格和库存数量等属性,这些信息用于展示给用户看。
  2. PO(Persistant Object)持久对象

    public class BookPO {
        private int id;
        private String title;
        private String author;
        private double price;
        private int stock;
    
        // getters and setters
    }
    • 对于同一个在线书店,PO可能是一个BookPO类,它与数据库中的books表对应,包含所有数据库字段。
  3. BO(Business Object)业务对象

    public class BookBO {
        private BookPO bookPO;
        private double discount;
    
        public double calculateDiscountedPrice() {
            return bookPO.getPrice() * (1 - discount);
        }
    
        // getters and setters
    }
    • BookBO可能包含BookPO对象,并提供一些业务逻辑,比如计算折扣价格或检查库存是否足够。
  4. POJO(Plain Old Java Object)简单老式Java对象

    public class User {
        private String name;
        private String email;
    
        // getters and setters
    }
    • 一个没有任何框架依赖的简单Java类,比如一个User类,只有一些基本的属性和方法。
  5. DAO(Data Access Object)数据访问对象

    public class BookDAO {
        public void addBook(BookPO book) {
            // code to insert book into database
        }
    
        public void deleteBook(int id) {
            // code to delete book from database
        }
    
        public List<BookPO> findBooksByAuthor(String author) {
            // code to query books from database
            return null;
        }
    }
    • BookDAO可能包含一些方法来操作数据库,比如添加新书、删除书籍或查询书籍。
  6. DTO(Data Transfer Object)数据传输对象

    public class OrderDTO {
        private List<BookVO> books;
        private String customerName;
        private String shippingAddress;
    
        // getters and setters
    }
    • OrderDTO可能用于封装订单信息,当需要将数据从一个服务传递到另一个服务时使用。
  7. TO(Transfer Object)传输对象

    public class UserTO {
        private String username;
        private String password;
    
        // getters and setters
    }
    • UserTO可能用于封装用户信息,用于在不同的系统或层之间传输用户数据。
  8. QO(Query Object)查询对象

    public class BookSearchQO {
        private String title;
        private String author;
        private Double minPrice;
        private Double maxPrice;
    
        // getters and setters
    }
    • BookSearchQO可能用于封装搜索书籍的条件,比如书名、作者和价格范围。
  9. DO(Domain Object)领域对象

    public class LibraryDO {
        private BookPO bookPO;
        private boolean isBorrowed;
    
        // getters and setters
    }
    • LibraryDO可能代表图书馆中的一本书,包含书籍信息和图书馆特有的属性,如借阅状态。

标签:Mapper,String,对象,Object,private,VO,public,PO
From: https://blog.csdn.net/2302_76543887/article/details/144508817

相关文章

  • CosyVoice 2.0 支持双向流式语音合成;无问芯穹开源全模态理解端侧模型丨RTE 开发者日报
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • spock之Unroll注解的作用
    在Spock框架中,@Unroll 注解用于数据驱动测试(data-driventesting),它允许将一个数据驱动的规范方法拆分为多个独立的测试用例,并为每个用例生成详细的描述。这对于调试和报告非常有用,因为它能清晰地展示每个用例的执行情况。适用场景数据驱动测试:当你有一组输入数据集,并希望......
  • DevOps技术选型
    版本控制工具选型Git特点与优势:分布式架构:每个开发人员都能在本地拥有完整的代码仓库副本,方便离线工作。例如,开发人员在没有网络连接的情况下仍能在本地提交代码、查看历史记录等操作,网络恢复后再将本地更改同步到远程仓库。强大的分支管理:支持创建多个分支用于并行开发......
  • 什么是DevOps私有构建?
    私有构建的定义与重要性定义:DevOps私有构建是指在企业内部网络环境中,不依赖公共的构建服务和资源,利用企业自己的构建服务器、工具和资源来构建软件项目。与公共构建相比,私有构建的整个过程包括代码获取、依赖下载、编译、测试和打包等环节都在企业内部的安全环境下进行,以确保......
  • 什么是DevOps集成构建?
    集成构建的概念与目标概念:DevOps集成构建是将软件开发过程中的各个环节,如代码开发、代码集成、构建、测试和部署等,通过自动化工具和流程紧密结合在一起的过程。它强调在一个持续的流程中,频繁地将开发人员的代码变更集成到一个共享的代码库中,并自动触发构建和测试,以确保代码的......
  • Moo University - Financial Aid POJ - 2010
    //MooUniversity-FinancialAidPOJ-2010.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://vjudge.net/problem/POJ-2010#author=GPT_zh贝西注意到,尽管人类有许多大学可供就读,但奶牛却没有。为了解决这个问题,她和她的同伴们成立了一所新的大......
  • 什么是 DevOps
    DevOps的定义与理念定义:DevOps是一种软件开发方法和理念,它强调开发(Development)团队和运维(Operations)团队之间的紧密协作与沟通,通过自动化流程和工具链来实现软件的快速交付、高质量部署和持续优化。其目标是打破传统开发和运维之间的壁垒,让软件产品能够更快地从开发阶段进入生......
  • Envoy 进阶指南(下):深入探究Envoy服务和架构
    接上篇:《Envoy进阶指南(上):从入门到核心功能全掌握》链接文章目录3.深入探究Envoy3.1Envoy服务发现机制3.1.1文件订阅3.1.2gRPC流式订阅3.1.3REST-JSON轮询订阅3.2监听器(Listener)3.3.架构3.3.1.请求流程3.深入探究Envoy3.1Envoy服务发现机制Envoy通过查询......
  • Volatility取证工具安装教程
    linux安装vol2.61.准备工作准备一台虚拟机,拥有python2版本(虚拟机以kali为例)准备Volatility2.6安装包volatilityfoundation/volatility:Anadvancedmemoryforensicsframework准备反编译库安装包vext01/distorm3:distorm32.安装步骤详解(全程在root用户下操作)(1)安装pip2......
  • 使用wsimport命令生成webService客户端代码
    wsimport 是JDK自带的一个工具,可以根据WSDL文件生成Java类。1.进入JDK/bin目录,从地址栏进入cmd 2.执行如下命令:wsimport-keep-sD:\tmp-pcom.cn.phone-verbosehttp://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl-keep:是否生成java源文件-s:指定.ja......