实习日记,12day(离职于杭州新卫信公司)

  1. 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
  2. Get与Post请求的应用场景
    Get: 获取资源,为了查找资源,请求结果没有持续性影响(比如添加数据行),且能进行反复的交互(create/update),会被搜索引擎,浏览器书签等收录(安全性),会被缓存。
    **Post: **传输数据实体(T entity),操作不能重复(因为不会缓存内容),不可以被手动输入
  3. EJB:Enterprise Java Bean
    EJB 是运行在独立服务器上的组件,客户端是通过网络对EJB 对象进行调用的。调用是通过RMI技术进行远程调用,
    RMI:
    对象序列化(implements Serializable ) 和 RPC (Remote Procedure Call)
    两者结合就是RMI(Remote Method Invocation):
    利用Java 对象序列化的机制实现分布式计算,实现远程类对象的实例化以及调用的方法。(使用的程序语法和本地机上对象间调用的语法一样)
    通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。
    实习日记,12day(离职于杭州新卫信公司)
    优点 系统设计与编程有极大的方便,只需要按照RMI规则设计就能忽略下层细节。调用远程计算机上的对象就像本地对象一样方便。RMI 可将完整的对象作为参数和返回值进行传递。
    缺点
    1.如果是简单的WEB应用完全可以用其他的开源框架代替,EJB是重量级应用,可不是什么微服务。
    2.通过网络传输其执行效率必然慢于本地。需要传递的信息不仅函数的返回值信息,还包含该对象序列化的字节内容。所以较多人并发访问的C/S结构的应用程序,不需要用EJB。
    3.难以调试,因为调用后返回的是结果,结果是一系列复杂过程共同产生的,其debug将会是场鏖战
    实习日记,12day(离职于杭州新卫信公司)