向客户端发送数据的最佳做法是什么:返回实体或 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 而不是实体。
我不确定我是否应该发送具有所选 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 而不是实体。