实习日记,12day(离职于杭州新卫信公司)
分类:
文章
•
2025-04-26 09:58:22
- VO DTO DO PO 概念与区别
展示层:VO DTO
服务层: DO
持久层:PO
VO:View Object 用于展示层,它的作用是把指定页面(或组件)的所有数据进行封装。
DTO: Data Transport Object 源于J2EE设计模式,为EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载。泛指展示层和服务层之间的数据传输对象。
DO: Domain Object,从现实世界中抽象出来的业务实体。
PO: Persistent Object 持久化对象,他跟持久层(一般是关系数据库Oracle,MySQL)的数据结构形成一一对应的映射关系,如果持久层是关系数据库,数据库中的每个字段就对应PO的一个属性。(建议使用lombok的Data标签)
extra:
用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。(Request Response)
VO转换为服务层需要的DTO,服务层中DTO被构造成DO,调用DO的业务方法完成业务。
ORM工具或其他,将DO转换为PO,调用持久层方法(数据层方法),写入数据库完成持久化。
VO与DTO 但凡客户端出现多样化(不止一个),就需要多个VO去匹配,然后转换为DO
DTO与DO DTO和DO之间有1:1,1:N,N:N的关系,不能一概而论。DO作为业务层,具有更多不能被展示层获取的属性,不能让展示层绕过服务层调用DO,这样AOP拦截服务会受到影响。
DO和PO在绝大部分情况下是一一对应的,PO是只含有get/set方法的PO
- Get与Post请求的应用场景
Get: 获取资源,为了查找资源,请求结果没有持续性影响(比如添加数据行),且能进行反复的交互(create/update),会被搜索引擎,浏览器书签等收录(安全性),会被缓存。
**Post: **传输数据实体(T entity),操作不能重复(因为不会缓存内容),不可以被手动输入
- EJB:Enterprise Java Bean
EJB 是运行在独立服务器上的组件,客户端是通过网络对EJB 对象进行调用的。调用是通过RMI技术进行远程调用,
RMI:
对象序列化(implements Serializable ) 和 RPC (Remote Procedure Call)
两者结合就是RMI(Remote Method Invocation):
利用Java 对象序列化的机制实现分布式计算,实现远程类对象的实例化以及调用的方法。(使用的程序语法和本地机上对象间调用的语法一样)
通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。

优点 系统设计与编程有极大的方便,只需要按照RMI规则设计就能忽略下层细节。调用远程计算机上的对象就像本地对象一样方便。RMI 可将完整的对象作为参数和返回值进行传递。
缺点
1.如果是简单的WEB应用完全可以用其他的开源框架代替,EJB是重量级应用,可不是什么微服务。
2.通过网络传输其执行效率必然慢于本地。需要传递的信息不仅函数的返回值信息,还包含该对象序列化的字节内容。所以较多人并发访问的C/S结构的应用程序,不需要用EJB。
3.难以调试,因为调用后返回的是结果,结果是一系列复杂过程共同产生的,其debug将会是场鏖战