POJO简介

文章目录

  • 简介
  • POJO与ELB的区别
    • POJO真正的意思
  • 常见的POJO类
    • DTO
    • DAO
    • PO
    • VO
    • Entity

简介

 什么是POJO?POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB(EJB是Enterprise Java Beans技术的简称, 又被称为企业Java Beans。)混淆所创造的简称。POJO是Plain OrdinaryJava Object的缩写,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。

POJO与ELB的区别

POJOJavaBean 是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Ordinary Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。 一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为 POJO。POJO(Plain Old Java Object) 这个名字用来强调它是一个普通java对象,而不是一个特殊的对象,其主要用来指代那些没有遵从特定的Java对象模型、约定或框架(如EJB)的Java对象。理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)

POJO真正的意思

POJO = “Plain Old Java Object”,是 MartinFowler 等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO 不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB,JDBC等等。

 即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

常见的POJO类

POJO类之间的关系

DTO

 DTO是用于在不同层之间传输数据的对象。它通常用于将数据从数据库层传输到服务层或传输数据从服务层到表示层。DTO对象包含一些字段,这些字段的类型和名称与源数据对象相对应,但通常不包含业务逻辑。DTO主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果。

 DTO可能还需要组合多个表查询到的对象成为一个大对象,以便减少网络的调用,或者给前端传输一些不在数据库中查到的属性,所以需要添加属性。对于不同的客户端展现,可以选择一次封装所有可能的数据组成DTO,也可以为每种展现创建不同的DTO。各有利弊。

  • 单个大DTO,减少调用次数,只用创建一次,但是难以掌握传输的数据
  • 不同的小DTO,要创建很多DTO,传输数据很清晰

DAO

 包含对数据的访问,负责持久层的操作 。通常需要结合PO来访问数据库,主要用来封装对数据的访问,并不转化成其它对象。

public interface BaseDao {// 通用的增删改查操作boolean insert(Student student);User selectById(long id);
}// 实现
public class StudentDaoImpl implements BaseDao {@Overridepublic boolean insertStudent(Student student) {students.add(student);return true;}······
}

PO

 持久化对象,是一种O/R映射关系,可以看成是数据库表到java对象的映射。PO对象应该只包含和数据库表对应的属性。在《阿里巴巴开发手册》中,PO也叫DO(Data Object)数据对象,与数据库表结构一一对应,通过DAO层向上传输数据源对象。

VO

VO(View Object)视图对象,主要用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。VO对象可以包含多个DTO对象,《阿里巴巴开发手册》中建议把输出的显示层对象命名为VO。

public class UserVO {private final String username; private final String email; // Constructor public UserVO(String username, String email) { this.username = username; this.email = email; } // Getter methods public String getUsername() {  return username;} public String getEmail() { return email;} 
}

Entity

 实体,和PO的功能类似,和数据表一一对应,一个实体一张表

参考资料

  1. EJB百度百科

  2. POJO百度百科

  3. 概念POJO、DTO、DAO、PO、BO、VO、QO、ENTITY详解

  4. Java DTO、VO 和 PO 解释与使用示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 22.04 Nvidia Audio2Face Error:Failed to build TensorRT engine

背景 1.在Ubuntu22.04上安装Audio2Face后启动,嘴形不会实时同步。控制台显示如【图一】: 【图一】 2.log日志如下: Error: Error during running command: [‘/home/admin/omniverse/libs/deps/321b626abba810c3f8d1dd4d247d2967/exts/omni.audio2fac…

【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer

DiffSpeaker: 使用扩散Transformer进行语音驱动的3D面部动画 code:GitHub - theEricMa/DiffSpeaker: This is the official repository for DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer paper:https://arxiv.org/pdf/…

clickhouse学习笔记01(小滴课堂)

老王经历-数据库架构演变历史 你是否能分清OLTP和OLAP系统 急速掌握-数据库里面行存储和列式存储 新一代列式存储ClickHouse介绍和应用场景说明 Linux服务器容器化部署ClickHouse实战 记得要在安全组里配置开放端口号。 到这我们就安装完了。 简单使用: 创建你的第…

鲲鹏920集成100G网卡RDMA测试说明

1、背景介绍 目前鲲鹏920处理器内集成了两个100G网卡,支持RDMA(Roce V2),说明如下 为了测试网卡性能,需要进行RDMA测试,两块鲲鹏920的板卡通过盛科的8180 100G交换芯片实现交换功能。 盛科8180芯片介绍如下…

2.亿级积分数据分库分表:增量数据同步之代码双写,为什么没用Canal?

1.亿级积分数据分库分表:总体方案设计 上一篇博客中写了一下积分数据分库分表的总体方案设计,里面说了采用应用程序代码双写的方式实现的增量数据同步,本篇就对这一块进行一些细化的介绍,包括: 为什么不用Canal监听数…

【S5PV210】 | GPIO编程

【S5PV210】 | GPIO编程 时间:2024年3月17日22:02:32 目录 [TOC] 1.参考 1.s5pv210开发与学习:1.5之裸机汇编流水点灯_s5pv210汇编指令集-CSDN博客 2.s5pv210开发与学习:1.8之裸机蜂鸣器实验_pv210 蜂鸣器-CSDN博客 3.s5pv210开发与学习:1.9之裸机按键控制LED_s5pv210 按键…

机器学习——压缩网络作业

文章目录 任务描述介绍知识蒸馏网络设计 Baseline实践 任务描述 网络压缩:使用小模型模拟大模型的预测/准确性。在这个任务中,需要训练一个非常小的模型来完成HW3,即在food-11数据集上进行分类。 介绍 有许多种网络/模型压缩的类型&#xff0…

代码随想录day23(2)二叉树:从中序与后序遍历序列构造二叉树(leetcode106)

题目要求:根据一棵树的中序遍历与后序遍历构造二叉树。 思路:408的经典题目,思路和手撕的思路差不多,先从后序中找到根节点,再从中序中找到此节点,然后分割成左右子树,记录一下左右子树的节点个…

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——B 题:基于多模态特征融合的图像文本检索完整思路与源代码分享

一、问题背景 随着近年来智能终端设备和多媒体社交网络平台的飞速发展,多媒体数据呈现海量增长 的趋势,使当今主流的社交网络平台充斥着海量的文本、图像等多模态媒体数据,也使得人 们对不同模态数据之间互相检索的需求不断增加。有效的信…

Rocket MQ 从入门到实践

为什么要使用消息队列,解决什么问题?(消峰、解藕、异步) 消峰填谷 客户端》 网关 〉 消息队列》秒杀服务 异步解耦 消息队列中的重要概念理解。(主题、消费组、队列,游标?) 主题&…

新手向-从VNCTF2024的一道题学习QEMU Escape

[F] 说在前面 本文的草稿是边打边学边写出来的,文章思路会与一个“刚打完用户态 pwn 题就去打 QEMU Escape ”的人的思路相似,在分析结束以后我又在部分比较模糊的地方加入了一些补充,因此阅读起来可能会相对轻松(当然也不排除这是…

Transformer总结

1.Transform背景介绍 1.1Transform的优势 相比于之前占领市场的LSTM和GRU模型,Transformer有两个显著的优势: (1)Transform能够使用分布式GPU进行并行训练,提升模型训练效率 (2) 在分析预测…

zookeeper基础学习之六: zookeeper java客户端curator

简介 Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Patrixck Hunt(Zookeeper)以一句“Guava is to Java…

【算法刷题 | 数组】3.12(二分查找、移除元素、有序数组的平方、长度最小的子数组、螺旋矩阵2)

文章目录 1.二分查找1.1题目1.2思路(核心:区间的定义)1.3左闭右闭1.4左闭右开1.5总结 2.移除元素2.1题目2.1思路2.2.1暴力解法2.2.2双指针法 23总结 3.有序数组的平方3.1题目3.2思路3.2.1暴力解法3.2.2双指针法 4.长度最小的子数组4.1题目4.2…

Linux中文件和目录管理(创建删除移动复制)

目录 1——一次建立一个或多个目录:mkdir ​2——创建一个空文件:touch 3——移动和重命名:mv 4——复制文件和目录:cp 5—— 删除目录和文件:rmdir和rm 在学习文件与目录的管理的一些命令之前,我们先…

深度学习-面经(part2、CNN)

2 CNN 对图像(不同的数据窗口数据)和滤波矩阵做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作。 卷积神经网络由输入层、卷积层、激励层、池化层、全连接层组成。 ① 最左边: 数据输入层,对数据做一些处理…

数字后端 EDA 软件分享

数字后端 EDA 软件分享 推荐这几家的EDA工具吧,虽说我也支持国产工具,但是我还是选择了这几家的工具 apache cadence mentor synopsys 下图我现在用的eda环境,利用网上的资源,自己独立在vmware上搭建好的EDA环境 除去pdk&#…

从政府工作报告探究计算机行业发展

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

计算机考研|怎么备考「科软」?

学好408和考研数学就可以了 大家对于科软已经回到了理性的区间,很难再出现刚开始的300分上科软的现象,也不会再出现388分炸穿地心的现象。 如果大家想报考科软,我觉得一定要认真对待复习,不要抱有抄底的心态去复习。 众所周知&am…