当前位置: 首页 > news >正文

【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释

 

VO

value object:值对象

通常用于业务层之间的数据传递,由new创建,由GC回收。

PO

persistant object:持久层对象

对应数据库中表的字段。

VO和PO,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。

DTO

data transfer object:数据传输对象。

表里面有十几个字段:id,name,gender(M/F),age,conmpanyId(如001)...

页面需要展示四个字段:name,gender(男/女),age,conmpanyName(如今日头条股份有限公司)。

DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构。

BO

business object:业务对象

BO把业务逻辑封装为一个对象。

我理解是PO的组合,比如投保人是一个PO,被保险人是一个PO,险种信息是一个PO等等,他们组合起来是第一张保单的BO。

POJO

"Plain Ordinary Java Object",简单普通的java对象。主要用来指代那些没有遵循特定的java对象模型,约定或者框架的对象。

没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法。(JavaBean中往往会封装一些简单逻辑)

可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。

Bean


JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。大家针对这种规范,总结了很多开发技巧、工具函数。符合这种规范的类,可以被其它的程序员或者框架使用。它的方法命名,构造及行为必须符合特定的约定:

所有属性为private。

这个类必须有一个公共的缺省构造函数。即是提供无参数的构造器。

这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

这个类应是可序列化的。实现serializable接口。

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。

POJO和Bean两者有什么区别


POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。

POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。

Javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。

POJO:

public class BasicInfoVo {
private String orderId;
private Integer uid;
 
public String getOrderId() {
    return orderId;}

public void setOrderId(String orderId) {
    this.orderId = orderId;}

public Integer getUid() {
    return uid;}

public void setUid(Integer uid) {
    this.uid = uid;
}}

 Bean:

public class UserInfo implements java.io.Serializable{  
//实现serializable接口。  
private static final long serialVersionUID = 1L;  
private String name;  
private int age;  
 
//无参构造器  
public UserInfo() {  
}  
 
public String getName() {  
    return name; }  
 
public void setName(String name) {  
    this.name = name; }  
 
public int getAge() {  
    return age; }  
 
public void setAge(int age) {  
    this.age = age;  }  
 
//javabean当中可以有其它的方法  
public void userInfoPrint(){  
    System.out.println("");  
}  }

DAO

data access object:数据访问对象

主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。

entity


实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。
负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。 

来自:https://www.cnblogs.com/aurum324/p/8167996.html

           https://www.cnblogs.com/aiyowei/p/10443161.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【java】堆栈、堆、方法区介绍
  • 【java】反射机制
  • 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现...
  • 【Spring boot】Spring boot之@Value注解的使用总结---研读
  • 【mysql】MySQL 面试,必须掌握的 8 个知识点
  • 【大厂面试】面试官看了赞不绝口的Redis笔记
  • 【C/C++】理解C和C++中的左值和右值
  • 【MQTT】MQTT C语言客户端实现/ MQTT嵌入式客户端
  • 【VS】VS工程设置(包含目录、库目录、附加包含目录、附加库目录、附加依赖项)等...
  • 【linux】最小测试工程miniTest
  • 【VS】判断dll/lib是32/64位|查看lib是导入库/静态库的方法
  • 【C++】C++写后端程序
  • 【C++】C++ 知识点100题
  • 【架构】傻瓜都能看懂的高并发量服务器架构
  • 【mySQL】MySQL数据库知识整理
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Codepen 每日精选(2018-3-25)
  • css选择器
  • Gradle 5.0 正式版发布
  • js 实现textarea输入字数提示
  • markdown编辑器简评
  • php的插入排序,通过双层for循环
  • Sublime text 3 3103 注册码
  • Webpack 4 学习01(基础配置)
  • XForms - 更强大的Form
  • 入门级的git使用指北
  • 微信开放平台全网发布【失败】的几点排查方法
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 7行Python代码的人脸识别
  • AI算硅基生命吗,为什么?
  • UI设计初学者应该如何入门?
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​虚拟化系列介绍(十)
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Linux(make工具和makefile文件以及makefile语法)
  • (C语言)球球大作战
  • (JS基础)String 类型
  • (MATLAB)第五章-矩阵运算
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三)elasticsearch 源码之启动流程分析
  • (实战篇)如何缓存数据
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ***原理与防范
  • .md即markdown文件的基本常用编写语法
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core控制台应用程序初识
  • .NET Core跨平台微服务学习资源
  • .NET Framework 3.5安装教程
  • .net反编译工具
  • :not(:first-child)和:not(:last-child)的用法