Popular explanation:
VO: (View Object): View object, used to display the layer.
DTO (Data Transfer Object): Data transfer object
DO (Domain Object): domain object, which is a tangible or intangible business entity abstracted from the real world.
PO (Persistent Object): Persistent object, which forms a one-to-one mapping relationship with the data structure of the persistence layer (usually a relational database).
My own understanding:
Direction: Backend –> Frontend
VO: The data used by the frontend page is displayed, and the backend is passed to the frontend.
Direction: front-end -> back-end
DTO: When the front-end calls the back-end interface, pass it to the back-end
DO: After receiving the DTO in the controller, create a new DO and pass it to the service,
PO: After the service receives the passed DO, convert it into a PO, pass it to the mapper method, and perform persistence processing.