范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

项目开发中,真的有必要定义VO,BO,PO,DO,DTO这些吗?

  原文链接:https://mp.weixin.qq.com/s/3-wA3hh75pgoTJu0Rz3SXw
  存在即是合理的,业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性,都是前辈血淋淋的宝贵经验,为什么不用?
  随着现在后端编程标准化程度越来越高,各种编程模型层出不穷。作为Java开发人员,大部分人不免要接触VO,BO,PO,DO,DTO之类的,但很多同学对这些概念一直以来都是云里雾里,团队开发过程中也总是处于混乱的状态,抓起来就用,本来是规范性的东西,却反而导致更加混乱了。
  今天我们把这些概念掰开揉碎来讲解一下,力求有一个清晰的理解,在开发过程中能有所助益。文中又理解不到位的,也欢迎大家斧正。 概念VO( View Object  ):视图对象 ,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO( Data Transfer Object  ):数据传输对象 ,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,更符合泛指用于展示层与服务层之间的数据传输对象。BO( Business Object  ):业务对象 ,把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。PO( Persistent Object  ):持久化对象 ,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。DO( Domain Object  ):领域对象 ,就是从现实世界中抽象出来的有形或无形的业务实体。
  如果光看这些概念,可能大部分人都理解,但还是很绕,具体用的时候还是不能很好区分,我们来横向做个比较,理解会加深一些。 易混点一:VO和DTO
  首先VO是最常用的,但对于这个概念,网上也是众说纷纭,value object 或 view object,一般说视图对象或者值对象,我更倾向理解为视图对象。说白了它就是展示用的,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,我们就把它封装为VO。
  VO比较容易混淆的是DTO,DTO是展示层与服务层之间传递数据的对象,可以这样说,对于绝大部分的应用场景来说,DTO和VO的属性值基本是一致的,而且他们通常都是POJO,那么既然有了VO,为什么还需要DTO呢?
  我们举例来说明一下:
  某公司有一个后台服务,服务层有一个getUser的方法返回一个系统用户,包含sex(性别)、年龄。对于服务层来说,DTO只从语义上定义,可能是这样的: {  "gender":"男",  "age":35 }
  但这个服务同时供多个客户端使用(不同门户),而不同的客户端对于表现层的要求有所不同,比如管理端要求显示准确的年龄,而应用端为了保护客户隐私,只需要显示一个年龄段即可。
  管理端VO: {  "gender":"男",  "age":35 }
  应用端VO: {  "gender":"男",  "age":30~40 }
  从这个例子可以看出,DTO很有存在的必要,根据职责单一原则,服务层只负责业务,与具体的表现形式无关,DTO不应该出现与表现形式的耦合,DTO定义的是原始数据,VO再对DTO数据进行解释。这下VO和DTO用法就清晰很多了。 易混点二:BO和PO
  PO是持久对象,这个很好理解,就是实体和数据库字段的对应,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO属性,大多数情况下,PO仅仅作为PO只是用来增删改使用。
  PO比较容易混淆的是BO,BO是业务对象,对应的是某个具体的业务块,可以包含多个属性、对象。简单点来说,我们可以把BO看作是PO的组合。
  我们举例来说明一下:
  PO-1是交易记录对象,PO-2是登录记录对象,PO-3是商品浏览记录对象,PO-4是添加购物车记录对象,PO-5是搜索记录对象,BO是个人网站行为对象,BO对象:{PO-1;PO-2;PO-3;PO-4;PO-5}。这样做的优点不言而喻,维护代码的时候查看BO,就能知道这块逻辑涉及多少表(PO)。 易混点三:BO和DTO
  搞清楚了BO和PO各自的用途后,我们会发现BO和DTO有重叠功能,一样可以对PO进行排列组合,那BO的存在的意义是什么呢?
  从用途上进行根本的区别,BO是业务对象,DTO是数据传输对象,虽然BO也可以排列组合数据,但它的功能是对内的,比如上个例子中的BO对象包括{PO-1;PO-2;PO-3;PO-4;PO-5}还有其他字段属性,但在提供对外接口时,BO对象中的某些属性对象可能用不到或者不方便对外暴露,那么此时DTO只需要在BO的基础上,抽取自己需要的数据,然后对外提供。
  在这个关系上,通常不会有数据内容的变化,内容变化要么在BO内部业务计算的时候完成,要么在解释VO的时候完成。 DO
  DO是领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。事实上,DO和PO在绝大部分情况下是一一对应的。阿里巴巴的开发手册中的定义DO等同于PO,即与数据库表结构一一对应,通过DAO层向上传输数据源对象。
  上一张图,更加直观地展示这些名词使用的节点:
  总结
  VO,BO,PO,DTO这样分层还是很有意义的。尤其在团队成员较多的情况下,结构更加一目了然,同时也能很大程度避免多端系统数据所需不一致时,有人修改属性影响其他页面。但也完全没有必要教条主义,把这些全部用上,需要根据所开发的业务复杂度来取舍,如果本身业务逻辑不负责,照搬全上反而让开发变的更复杂。
  例如业务不复杂,根本没有多端展示的差异化,VO可以直接拿掉,直接使用DTO传输到前端数据即可。
  同时在使用过程中,最重要的是要在团队中达成共识,概念一致,如果使用了这些,但各按各的理解来,甚至抓起来就直接用,反而会让代码变得更乱,还不如直接POJO、DTO打天下。
  另附这些概念命名规范: 数据对象:xxxPO,xxx即为数据表名。(也可DO) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 展示对象:xxxVO,xxx一般为网页名称。 业务对象:xxxBO,xxx是业务名称。

国家反诈中心app为什么评分那么低?评分低因为什么?我相信大家都知道,无非是挡住了某些人赚钱。官方发布的国家反诈中心APP的作用就是为了各大市民朋友们不要上当受骗,利国利民,又有何不妥?导致国家反诈中心APP评分低究苹果自愿减免抽成不是良心发现,背后只为死磕Epic高调搞宣传,低调改规则,苹果一向是拿捏分寸的好手。在新机型渲染图偷跑多日后,苹果官方宣布北京时间9月15日凌晨召开秋季发布会特别活动,届时全球各地可以通过在线直播进行观看。根据爆料为什么高手都喜欢延迟满足,他们发现了什么规则?因为经过自己不懈努力才实现目标,身体会分泌内啡肽,这种东西专门在长时间努力做事后分泌,会使人有种愉悦感但又不像多巴胺那么猛烈。其实这些成功人士也不是说发现了什么规则,做为一个成功人汽车零部件出口大幅增长新能源车市场需求旺盛海关总署数据显示,今年1至8月,汽车零部件产品出口金额3165。8亿元,同比增长34。6,较2019年同期增长了9倍多。据央视财经报道,多家企业目前出口订单爆棚,生产线满负荷运行,闭眼买,放心开!比亚迪e平台3。0于昨日发布昨日比亚迪在深圳正式发布了其全新一代电动3。0平台,亮点十足,具有安全智能高效和美学四大特点。3。0平台有望解决目前新能源汽车的安全和续航给用户的使用体验两大痛点,同时比亚迪也宣布小巨人的创新密码有人物联网万物互联在云端,接入设备近40万,淘出来的工业物联网云平台编者按近年来,从部委重金支持奖补,到高层会议密集部署,培育专精特新中小企业已经上升到国家战略的高度。而在迈向新旧动能转换五年取得突破阶段的山东,正在坚决改造提升传统动能,培育壮大新新规要求一部手机必须能用7年,苹果三星你在开玩笑?如果买一部手机可以一直连续使用七年,并且也不卡会是一种什么样的体验。手机厂商生产迭代的速度会变慢,有更多的时间来精耕细作,提高硬件和软件的品质,产品的质量也会变得越来越高。原来以为一匹格力变频空调一小时能用多少电?一一般1匹空调的耗电量大约为1个小时1度电。二一匹空调的功率1空调的匹数中的匹代表的是空调的输出功率,我们常用W来表示。1匹空调有小1匹和大1匹的说法,这是为了能够更好的计算空调功阿里事件P7女下属犹如马夫人毁了乔峰,它们有半毛钱的可比性么?版权声明,文章转自记忆承载微信公众号。转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者与我们联系,我们将及时更正删除,谢谢。我也不知道是谁开的脑洞,读为什么留在农村辛苦种地的年轻人会被人轻视,甚至认为是无能?谢谢邀请!总体上来说,现在还心甘情愿留在农村种地的年轻人,确实很少。从传统的好男儿志在四方的观点来看,最起码这部分年轻人没有志存髙远?可建国后,也曾有过青年志在扎根农村一百年的宏图被资本剥削,被大数据压榨的互联网新兴职业底层劳动者依托于资本成立起来的平台,已经沦为了资本家的摇钱树。而这些人还不满足于此,他们会通过大数据进一步压榨这些劳动者的剩余价值。可悲的是,这些底层劳动者,已经变得麻木,没有了反抗的勇气,
你的密码安全吗?区块链技术之哈希今天是我们的区块链底层技术分享第一期哈希。我们先不说哈希是什么,在你的生活中是不是存在以下的情况你在一个网站注册了账号,输了密码身份证号银行卡号,有没有担心过自己的敏感数据会被泄露以太坊以太坊是币吗?传说中的区块链2。0来了1前面几篇文章,简单介绍了区块链初期的发展形态比特币。相关文章链接接着比特币,我们继续分享区块链的发展历程。01hr区块链发展阶段划分提起区块链的发展,以太坊也是一个经常会被提到的高磁器口古镇慢时光磁器口古镇蕴含丰富的巴渝文化宗教文化沙磁文化红岩文化和民间文化,各具特色。一条石板路,千年磁器口,是重庆古城的缩影和象征,被赞誉为小重庆。拿着P20Pro,记录磁器口古镇的慢时光。与沃尔沃XC90同一平台,与大众途昂相近尺寸,领克09你满意吗?领克又放大招了!众所周知,领克走的一向是年轻运动的风格。这些年来被人们熟知的领克01,打性能牌的领克03,又或者是领克02,都是让人们知道了领克独特的个性,激情年轻。所以这一次不出CMA架构打造,全系沃尔沃2。0T发动机,吉利星越L要火?众所周知,自主车企的佼佼者吉利在整个汽车市场都有着强大的竞争力,旗下除了有吉利汽车,还有领克极氪极星几何沃尔沃宝腾路特斯smart等。从吉利品牌的身上我们或多或少能看到些世界上最成女性座驾朋克猫惹人爱!外观复古内饰豪华,暖男模式呵护你欧拉品牌一亮相,就引起了热议,旗下已亮相的朋克猫闪电猫以及最近的芭蕾猫,每一款车型都是为了女性而设计,各个精巧且美观。不仅如此,最近欧拉品牌也正式开启了旗下朋克猫的共创计划将造车决华山玉女峰,华山论剑中峰峰上林木葱茏,环境清幽,奇花异草多不知名,游人穿行其中,香浥禁袖。峰头有道舍名玉女祠,传说是春秋时秦穆公女弄玉的修身之地,因此峰又被称为玉女峰。史志记述,秦穆公女弄玉姿容绝世,华山北峰云台峰,壮美风光云台峰,是华山主峰之一,海拔1614米。此峰四面悬绝,上冠景云,下通地脉,巍然独秀,有若云台,因此得名。因位置居北,又叫北峰。当年智取华山的故事就发生在这里。登临云台峰,在领略自然华山群峰风光与北峰索道云台峰,是华山主峰之一,海拔1614米。此峰四面悬绝,上冠景云,下通地脉,巍然独秀,有若云台,因此得名。因位置居北,又叫北峰。当年智取华山的故事就发生在这里。登临云台峰,在领略自然洪崖洞之夜,洪崖滴翠用华为P20Pro手持超级夜景记录洪崖洞夜景。洪崖洞一共有11层,夜晚灯光是从晚上6点开灯,10点熄灯。可望吊脚群楼观洪崖滴翠,逛山城老街赏巴渝文化,烫山城火锅看两江汇流,品天下美川剧变脸,白蛇传来到重庆,感受巴渝之地的川剧艺术,川剧精髓的变脸看得是目瞪口呆,变脸艺人下场在观众面前表演变脸,真是轮番喝彩。主题川剧变脸,白蛇传器材华为P20Pro徕卡三摄和索尼7(仅图1)后期