---- layout: default title: Java分层概念(转) category: [技术, Java, 代码学习] comments: true --- Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) 数据访问 1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层
1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层就是biz) 首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。 通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。 在O/R Mapping的世界里,有两个基本的也是重要的需要了解,即VO,PO。 VO,值对象(Value Object) PO,持久对象(Persisent Object) 它们是由一组属性及其get/set组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。 1. VO new关键字创建,由GC回收 P
复杂的软件系统都会采用分层的架构设计,分层之后,每一层职责鲜明,整体上降低了系统的耦合性,提高了健壮性。
new关键字创建,由GC回收。VO是值对象,精确点来说,它是业务对象,存活在业务层,由业务逻辑使用,其存活目的就是给数据提供一个生存地。
POJO PO BO DO DTO VO 概述 缩写 全称 中文 功能 说明 POJO plain ordinary java object 无规则简单java对象 中间对象,与其他对象转换 PO persistent object 持久对象 数据对象对应数据库中的entity BO business object 业务对象 封装业务逻辑对象 VO value object / view object 表现层对象 封装视图层对象 DTO data transfer object 数据传输对象 跨进程或远程传输 DO domain object 领域对象 从现实世界中抽象出来的有形或无形的业务实体 DAO data access object 数据访问对象 封装对数据库访问对象 问题 为什么项目中要存在多种对象,多种对象直接需要相互转换,是否无用? 举例:数据插入操作 HTTP: (Controller 层 )VO 对象 --> (Service 层) BO 对象 --> (DAO 层) PO 对象 --> DAO 对象 RPC : (RPC 接口)DTO 对象 --> --> (Service 层) BO 对象 --> (DAO 层) PO 对象 --> DAO 对象 回答: 世界上有大狗(可以看家护院)的存在也有小狗存在的必要,没有一种事务的存在是没有理由的 代码中不同的层次需要使用不同的对象,使用不同的对象是为了更好的理解业务及解决问题 举例: PO / DO 对象通常对应数据表实体映射对象;如果没有BO对象,此时业务需求需要将时间格式化后展示,需要在PO类中增加属性,但增加的属性却不是表中应有的字段,使PO类的含义发生了变化 如设计活动,活动实体是一张表,活动页面样式、活动优惠等等又是一张表,在将数据返给前端时,前端不需要知道后端是几张表的实现,只需要知道解析这个对象中的相关属性即可;此时需要BO对象来中转,BO对象对应多个PO对象 有这种疑问通常是BO与PO对象的属性完全没有区别,此时需要考虑程序业务逻辑,是否需要将查询结果全部返回给调用方 参考资料 PO/POJO/BO/DTO/VO的区别 Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转) Java中DO/BO/DTO/VO/AO/PO
在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。
PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。 DO(Domain Object)领域对象 就是从现实世界中抽象出来的有形或无形的业务实体。一般和数据中的表结构对应。 TO(Transfer
在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。
可以看成是与数据库中的表相映射的java对象。使用 Mybatis 来生成 PO 是不错的选择。
这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo、Vo来命名,面试的时候,也有可能被问到这些问题。那么,这几者分别代表什么意思呢?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/52904468
O/R Mapping是Object Relational Mapping(对象关系映射)的缩写。简单来说,就是将对象和关系数据库绑定,用对象来表示关系数据。
本文介绍了 PO、VO、BO、DTO、DAO 和 POJO 的概念及区别,包括它们的定义、使用场景和优缺点。同时,还探讨了在项目中如何灵活运用这些概念,以充分发挥它们的优点,提高开发效率和代码质量。
转自:全栈开发者中心 说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 这些概念的同学来说,大都会有一种“这都是什么鬼?”的感觉,可谓是云里雾里,不知今夕何夕!现在,就让
说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 这些概念的同学来说,大都会有一种“这都是什么鬼?”的感觉,可谓是云里雾里,不知今夕何夕!现在,就让咱们一起揭开这些 “X”O 的面纱,看看它们的庐山真面目。首先,来个图瞅瞅:
Java中数据的封装会被命名为各种O,常见的有PO、VO、DTO、BO、POJO。 1.PO PO是Persistant Object的缩写,即持久化对象,通常对应数据模型,可以简单的理解为一个PO实例对应数据库中的一条记录,操作该实例即可以操作数据库中对应的数据。PO只封装数据库中对应的记录,不应该包含对数据库的操作。 2.VO VO是Value Object的缩写,即值对象(也可以理解为View Object视图对象),通常用于封装页
点击关注公众号,Java干货及时送达 来源:https://lepdou.github.io/blogs/web_develop_standard/blog.html 引言 网上经常有这样的言论: 1.web开发太low,没技术含量。 2.web开发根本涉及不到多线程的问题等。 对于第一点,我想说技术没有高低贵贱之分,能把自己领域方向做到极致的才是最吊的。 对于第二点,谈一下个人对web应用的理解。web应用的定义:提供http协议支持的应用。 每一个系统都不是封闭的,肯定得和其它系统或者人交互。http
答案是因为在复杂的业务逻辑中,往往单一实体类无法满足我们的需求,就举个简单的例子,一个课程系统中有一级分类和二级分类,那么一个一级分类应该会对应多个二级分类,如果我们使用二级菜单的话,就应该可以实现这种联动的效果,一旦一级菜单确定下来了,那么二级菜单的下拉项中的选项只能是一级菜单下的二级菜单,也许有点绕 发证大意就是需要做到 一对多
用于表示前端的展示对象;相比与PO(数据库映射对象),VO对象与前端交互的数据可能需要经过过滤、拆分、聚合等操作;比方说部分不需要展示的数据,VO层将其踢出后返回;如果数据来源于多个地方,也将会在VO对象进行聚合再返回等操作;
VO:值对象、视图对象 PO:持久对象 QO:查询对象 DAO:数据访问对象——同时还有DAO模式 DTO:数据传输对象——同时还有DTO模式 PO:全称是persistant object持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。 BO:全称是business object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。 VO :value object值对象ViewObject表现层对象主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。 DTO :Data Transfer Object数据传输对象主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。 POJO :plain ordinary java object 简单java对象个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO直接用它传递、传递过程中就是DTO直接用来对应表示层就是VO DAO:data access object数据访问对象这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.主要用来封装对数据库的访问。通常和PO结合使用,DAO中包含了各种数据库的操作方法,比如对DATABASE的增删改查。它可以把POJO持久化为PO,用PO组装出来VO、DTO model:存放模型,通常是实体BEAN,也就是你业务建模分析出来的那些actor等实物类。 service:是后来网上大多数人经验总结出来,从而增加了这么一个层次,主要是为了降低耦合,面向接口、组件编程,具体的服务类,能产生实际效果和影响的类放于此。 util:utility是存放工具类相关的JAVA代码的,比如采用filter过滤器,还有一些其他的相关小工具杂类亦存放于此。
VO:值对象、视图对象 PO:持久对象 QO:查询对象 DAO:数据访问对象——同时还有DAO模式 DTO:数据传输对象——同时还有DTO模式 PO:全称是persistant object持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。 BO:全称是business object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育
封装业务逻辑为一个对象(可以包括多个PO,通常需要将BO转化成PO,才能进行数据的持久化,反之,从DB中得到的PO,需要转化成BO才能在业务层使用)。 关于BO主要有三种概念 :
可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。
一个支持动态配置、ORM、SQL 重构、跨数据库的 Java 持久层工具。 1jSqlBox 是什么? jSqlBox 是一个微型的、易学易用的、支持简单的 O-R 映射的持久层工具,目标是用来代替功
在目前互联网框架中,我们听得最多的三层架构,主要有controller、serivce、dao,所以就引入了一系列的按照包命名来区分各层次,比如entity、web、dao....,那么再细分还有VO、DTO、DO、PO...,今天就大概了解了一下,做个笔记~
我们知道,这些 O 不管叫什么名字,其本质都还是对象(Object),既然本质都一样,为什么非要给他们套上各种马甲?个人认为原因有三:第一,随着编程工业化的发展,需要有一套合理的体系出现。中国人喜欢造神,外国人喜欢造概念,于是 MVC、MVP、MVVM 等编程模型就出现了,为了搭配这些编程模型的使用,需要对 Object 的功能进行划分,于是我们便看到了这些层出不穷的 Object。当然这里并没有批评这些概念的意思。其二,我认为在团队协作编码中,一个好的命名方式是可以节约很多时间成本的。就比如getItemById一眼看去就知道是通过 id 获取一个 item 对象,ItemVO一眼看去就知道是前端透出的 json 对应的对象。其三,如此划分,可以让项目结构更加清楚,不至于出现东一块西一块,对象乱扔的局面。尽可能避免了在多人协作时对象混乱的情况。总的来说,这一切都是为了让软件编程更加合理、更加规范、更加高效。
对应数据库中表的字段。VO 和 PO 都是属性加上属性的 get 和 set 方法;表面看没什么不同,但代表的含义是完全不同的。
1. 对象规范 1.1. PO persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。 1.2. BO business object业务对象 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 1.3. VO ViewObject表现层对象 主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。 1.4. DTO Dat
原文链接:https://www.xttblog.com
在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO中应该不包含任何对数据库的操作。
随着现在后端编程标准化程度越来越高,各种编程模型层出不穷。作为Java开发人员,大部分人不免要接触VO,BO,PO,DO,DTO之类的,但很多人对这些概念一直以来都是云里雾里,团队开发过程中也总是处于混乱的状态,抓起来就用,本来是规范性的东西,却反而导致更加混乱了。
对于第二点,谈一下个人对web应用的理解。web应用的定义:提供http协议支持的应用。 每一个系统都不是封闭的,肯定得和其它系统或者人交互。http协议因为其简单、支持广泛的特性被不同领域的系统作为其输入输出的协议。近几年微服务的出现,越来越多的web应用不再是只输出html页面了。更多的是Restful规范的API接口,json数据格式,以及http协议。
需要注意的是,这些缩写词的具体定义可能因项目而异,因此在具体项目中应该根据团队约定和实际需求来使用。
POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。
1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。
分析上述配置,我们需要在 java 类上指明 @Configuration、@EnableSwagger2 注解。
演示代码地址:kuizuo/spring-boot-demo (github.com)
几年前,大家并不是这样,那时候还有很多东西可以创新,乱世出英雄总能在一个方向深耕并做出一款款好用的产品功能、框架服务、技术组件等。但后来好像这样的情况开始减少了,取而代之的是重复、复刻、照搬,换个新的皮肤、换个新的样式、换个新的名字,就是取巧的新东西了。
随着互联网的发展,前后端分离的开发模式越来越流行。在前后端数据交互过程中,为了保证数据的安全性和效率,通常会采用 DTO 和 VO 来封装数据。
POJO、PO、DTO、DAO、BO、VO这些概念作为Java开发来说应该全部或者部分遇到过,作为架构师的你想必更是清楚这些概念在不同场景的应用。 下面我逐一介绍一下,想必你会更深刻。 POJO 全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的属性与表字段一一对应。 PO 全称为:Persistant Object,即持久化对象。可以理解为数据库中的一条数据即一个BO对象,也可以理解为POJO经过持久化后的对象。 DTO 全称
在Spring Boot开发中,我们经常会听到诸如PO、VO、DAO、BO、DTO、POJO等概念。这些术语看起来很相似,但它们之间有着不同的含义和用途。在本文中,我们将详细介绍这些概念,并解释它们在Spring Boot开发中的作用和用法。
例如,用户信息包含:用户姓名name、用户密码password、用户的年龄age,首先数据库层获取PO数据包含这三个字段的数据,可是password不应该暴露出去,怎么做呢,在发送给服务层的时候做一次处理,转成只有name和password的DTO,这样就能减少出数据的传输,同时将name可以改为username,就可以保证数据库结构的安全。
总结出一个原则:分析设计层面和实现层面完全是两个独立的层面,即使实现层面通过某种技术手段可以把两个完全独立的概念合二为一,在分析设计层面,我们仍然(至少在头脑中)需要把概念上独立的东西清晰的区分开来,这个原则对于做好分析设计非常重要(工具越先进,往往会让我们越麻木)
MyBatis 是一款优秀的半自动的ORC持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
一:什么是POJO POJO的名称有多种,pure old java object 、plain ordinary java object 等。 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。 POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。
之前一直有朋友问我Java中DTO、TO、VO、PO、DO、BO、AO、DAO、POJO这么多O到底是什么意思,看博客看不懂,有没有实际的例子
PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.
领取专属 10元无门槛券
手把手带您无忧上云