Skip to content

面试速答(先看这里)

**一句话结论:**总的来说,DO、DTO、VO 都是用来承载数据的对象,它们在不同的场景下有着不同的作用。

60秒标准回答:

DO、DTO、VO 是三个常见的 Java 对象,它们都是用来承载数据的,但是在不同的场景下有着不同的用途

总的来说,DO、DTO、VO 都是用来承载数据的对象,它们在不同的场景下有着不同的作用。DO 用于表示实体对象,DTO 用于在不同层之间传输数据,VO 用于表示前端页面显示的数据。使用这三个对象可以有效地组织应用程序的数据模型,并且提高了应用程序的可维护性和可扩展性

举一个简单的例子,假设我们有一个 User 实体类,包含了 id、username 和 password 三个属性。下面我们分别定义该实体类的 DO、DTO 和 VO

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**DO、DTO、VO 是三个常见的 Java 对象,它们都是用来承载数据的,但是在不同的场景下有着不同的用途。
  • **要点2:**举一个简单的例子,假设我们有一个 User 实体类,包含了 id、username 和 password 三个属性。
  • **要点3:**UserDO(Domain Object):领域对象,对应数据库中的一条记录:
  • **要点4:**UserDTO 对象中只包含了 id 和 username 两个属性,用于在不同层之间传输数据,避免了对密码等敏感信息的传输。
  • **要点5:**通过以上的例子可以看出,DO、DTO 和 VO 在不同的场景下有着不同的用途,它们分别用于表示实体对象、传输数据以及前端页面显示的数据,有利于对应用程序的数据模型进行有效组织,提高了应用程序的可维护性和可扩展性。

**记忆锚点:**DTO → Object → username → 数据传输对象 → View → Transfer

关键取舍:

  • DTO 对象封装了要传输的数据,避免了对数据的频繁访问和传输,从而提高了应用程序的性能。
  • UserVO(View Object):视图对象,用于表示前端页面显示的数据: UserVO 对象中只包含了 username 属性,用于在前端页面显示用户的用户名,避免了将不必要的数据传输到前端,提高了应用程序的性能和安全性。

易错提醒:

  • DTO 对象封装了要传输的数据,避免了对数据的频繁访问和传输,从而提高了应用程序的性能。
  • UserDTO(Data Transfer Object):数据传输对象,用于在不同层之间传输数据: UserDTO 对象中只包含了 id 和 username 两个属性,用于在不同层之间传输数据,避免了对密码等敏感信息的传输。

加分表达:

  • DO、DTO、VO 是三个常见的 Java 对象,它们都是用来承载数据的,但是在不同的场景下有着不同的用途。
  • 总的来说,DO、DTO、VO 都是用来承载数据的对象,它们在不同的场景下有着不同的作用。
  • 通过以上的例子可以看出,DO、DTO 和 VO 在不同的场景下有着不同的用途,它们分别用于表示实体对象、传输数据以及前端页面显示的数据,有利于对应用程序的数据模型进行有效组织,提高了应用程序的可维护性和可扩展性。

追问准备:

  • 围绕「DTO」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Object」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「username」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

DO、DTO、VO 是三个常见的 Java 对象,它们都是用来承载数据的,但是在不同的场景下有着不同的用途。

  1. DO(Domain Object):**领域对象,也称为实体对象。**DO 通常用于数据库表的映射,DO中包含了实体的属性以及对实体的操作方法。DO 对应的是系统中的数据模型,通常与数据库表一一对应。

  2. DTO(Data Transfer Object):**数据传输对象。**DTO 通常用于在不同层之间传输数据,例如在前端页面和后端服务之间传输数据时使用。DTO 对象封装了要传输的数据,避免了对数据的频繁访问和传输,从而提高了应用程序的性能。

  3. VO(View Object):**视图对象,也称为展示对象。**VO 通常用于表示前端页面显示的数据,例如在 MVC 架构中的 View 层,VO 对应的是用户界面模型,通常与页面一一对应。

总的来说,DO、DTO、VO 都是用来承载数据的对象,它们在不同的场景下有着不同的作用。DO 用于表示实体对象,DTO 用于在不同层之间传输数据,VO 用于表示前端页面显示的数据。使用这三个对象可以有效地组织应用程序的数据模型,并且提高了应用程序的可维护性和可扩展性。

扩展知识 ​

举一个简单的例子,假设我们有一个 User 实体类,包含了 id、username 和 password 三个属性。下面我们分别定义该实体类的 DO、DTO 和 VO。

UserDO(Domain Object):领域对象,对应数据库中的一条记录:

plain
public class UserDO {
    private Long id;
    private String username;
    private String password;

    // getter 和 setter 方法
}

UserDO 对象中包含了 id、username 和 password 三个属性,它对应着数据库中的一条记录。

UserDTO(Data Transfer Object):数据传输对象,用于在不同层之间传输数据:

plain
public class UserDTO {
    private Long id;
    private String username;

    // getter 和 setter 方法
}

UserDTO 对象中只包含了 id 和 username 两个属性,用于在不同层之间传输数据,避免了对密码等敏感信息的传输。

UserVO(View Object):视图对象,用于表示前端页面显示的数据:

plain
public class UserVO {
    private String username;

    // getter 和 setter 方法
}

UserVO 对象中只包含了 username 属性,用于在前端页面显示用户的用户名,避免了将不必要的数据传输到前端,提高了应用程序的性能和安全性。

通过以上的例子可以看出,DO、DTO 和 VO 在不同的场景下有着不同的用途,它们分别用于表示实体对象、传输数据以及前端页面显示的数据,有利于对应用程序的数据模型进行有效组织,提高了应用程序的可维护性和可扩展性。