向客户端发送数据的最佳做法是什么:返回实体或 dto?

What is the best practice for sending data to the client: returning an entity or a dto?

我不确定我是否应该发送具有所选 table 的实体和所有与之相关的 table 或具有相关 [= 的外键的 DTO 20=]s,只在需要时调用 tables。

返回的实体示例:

@Entity
public class Staff implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; 
    private String name;
    private String role;    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn()
    private Gsm gsmDetails; 
    @OneToMany(mappedBy ="staff", fetch = FetchType.LAZY)
    private List<Coupon> coupons = new ArrayList<Coupon>(); 
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn()   
    private Voip voip;
    @OneToOne()
    private Card card;
    @OneToOne()
    private Phone phone;
//rest of the getters setter and consturctors

DTO 示例:

public class staffDto {
    
    private Long id; 
    private String name;
    private String role;    
    private Long gsmId; 
    private List<Long> couponID; 
    private long voipID;
    private long cardId;
    private long phoneId;

我不知道如何避免不必要的长时间加载或膨胀。

纯粹从我的观点和意见来看,我会推荐DTO

在大多数情况下,我们希望隐藏数据库结构。

我绝对不是这个主题的专家,我更像是一个前端 - angular 开发人员。不过,我认为这一点回答了你的问题。

在这里,我向类似的问题发送 link,其中很好地解释了为什么更喜欢 DTO 而不是实体。