Java POJO划分

PO

Persistant Object 的缩写,用于表示数据库中的一条记录映射成的 java 对象。PO 仅仅用于表示数据,没有任何数据操作。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。

VO

Value Object 的缩写,用于表示一个与前端进行交互的 java 对象。有的朋友也许有疑问,这里可不可以使用 PO 传递数据?实际上,这里的 VO 只包含前端需要展示的数据即可,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在 VO 中体现出来。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。

DTO

Data Transfer Object 的缩写,用于表示一个数据传输对象。DTO 通常用于不同服务或服务不同分层之间的数据传输。DTO 与 VO 概念相似,并且通常情况下字段也基本一致。但 DTO 与 VO 又有一些不同,这个不同主要是设计理念上的,比如 API 服务需要使用的 DTO 就可能与 VO 存在差异。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。

BO

Business Object 的缩写,用于表示一个业务对象。BO 包括了业务逻辑,常常封装了对 DAO、RPC 等的调用,可以进行 PO 与 VO/DTO 之间的转换。BO 通常位于业务层,要区别于直接对外提供服务的服务层:BO 提供了基本业务单元的基本业务操作,在设计上属于被服务层业务流程调用的对象,一个业务流程可能需要调用多个 BO 来完成。

POJO

Plain Ordinary Java Object 的缩写,表示一个简单 java 对象。上面说的 PO、VO、DTO 都是典型的 POJO。而 DAO、BO 一般都不是 POJO,只提供一些调用方法。

**应用**

不同类型的对象在架构设计中用于不同的用途,如下的分层架构表示了各个 POJO 的用途。为什么要在分层架构中,定义这些 POJO 对象呢?主要是为了确保各个分层能够很好地封装自己的服务,有效地控制信息的传播。

Java POJO划分

试想一下,如果没有 VO 和 PO 的区别,那么数据库表结构的所有字段就一览无余地展示到了前端,给后台安全带来很大的隐患,并且无法在网络传输中剥离冗余信息提高了用户的带宽成本

转自:https://www.zhihu.com/question/39651928

Original: https://www.cnblogs.com/itplay/p/13228890.html
Author: 是谁扭曲了时空
Title: Java POJO划分

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537341/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 键入网址到网页显示,期间发生了什么?

    生成http请求信息: 请求行(请求方法字段、URL字段和HTTP协议版本)GET /index.html HTTP/1.1 消息头(key-value形式)User-Agent:…

    Java 2023年6月9日
    062
  • JavaSE基础——课程笔记

    1.方法概述 1)定义 方法(method):完成特定功能的代码块 2)优点 ①提高了代码的复用性 ②让代码的逻辑更清晰 2.方法的定义和调用 1)定义 2)调用 3.Debug查…

    Java 2023年6月6日
    061
  • SpringBoot扩展接口- ApplicationListener 事件监听器

    ApplicationListener监听器用来监听ApplicationEvent事件。 ApplicationListener 可以在Spring项目运行过程中,监听对应的事件…

    Java 2023年5月30日
    045
  • 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

    在项目的lib和tomcat的lib目录下分别增加所需的JSTLjar文件然后重启项目 Original: https://www.cnblogs.com/recorderM/p/…

    Java 2023年6月5日
    071
  • 关于taro引进vant组件所遇到的问题

    { from: ‘src/components/vantWeapp/wxs’, to: ‘dist/components/vantWeapp/w…

    Java 2023年6月6日
    087
  • 动力节点Spring框架学习笔记-王鹤(三)spring整合MyBatis

    正在学Spring,整理了相关的学习笔记,分享给大家共同进步,视频看的动力节点王鹤老师讲的spring框架,条理非常清晰,够详细 *视频观看地址 将 MyBatis 与 Sprin…

    Java 2023年6月7日
    063
  • WIN进程注入&BypassUAC&令牌窃取

    WIN进程注入&BypassUAC&令牌窃取 本地提权—win令牌窃取 假冒令牌可以假冒一个网络中的另一个用户进行各类操作。 所以当一个攻击者需要域管理员的操作权限…

    Java 2023年6月6日
    079
  • 2022美团Java后端开发春招实习面经

    ​ 五层架构:应用层、运输层、网络层、数据链路层、物理层 ​ HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol ​ HTTP协议拆解为超文本…

    Java 2023年6月7日
    066
  • JAVA的环境搭建

    第一章 JAVA的环境 第一节 Java三大版本 JavaSE:标准版(桌面程序、控制台开发) Standard Editor(标准版)J2SE 包含构成 Java 语言核心的类,…

    Java 2023年6月13日
    082
  • Kubernetes-Ingress

    1. 简介 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。 I…

    Java 2023年6月7日
    064
  • auth授权登录:淘宝客官方接口中用到的sessionkey是如何获取的

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年5月30日
    067
  • RabbitMQ基础知识

    RabbitMQ基础知识 一、RabbitMQ概述 RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件,它具有以下特性 开源、性能优…

    Java 2023年6月8日
    082
  • mybatis中使用limit实现分页

    1.写UserMapper接口 //实现分页查询 List SelectAllUserLimit(Map map); 2.将接口映射到UserMapper.xml中 select …

    Java 2023年6月9日
    068
  • 集合总结

    2.Collection集合 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如…

    Java 2023年6月14日
    073
  • VMware Data Recovery备份恢复vmware虚拟机

    VMware Data Recovery 是VMware虚拟机备份工具,可创建虚拟机备份,同时不会中断虚拟机的使用或虚拟机提供的数据和服务。Data Recovery 管理现有备份…

    Java 2023年5月30日
    049
  • GDB高级一点的命令

    GDB 是我们平时调试 c/c++程序的利器, 查起复杂的 bug 问题,比打印大法要好的多,但是也不得不说, gdb 在默认情况下用起来并不是很好用,最近学习到几个高级点的技巧,…

    Java 2023年5月29日
    063
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球