我不确定是应该发送具有所选表和与其相关的所有表的实体,还是发送具有相关表的外键并仅在需要时调用所述表的DTO。
返回的实体示例:
@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。
在大多数情况下,我们希望隐藏数据库结构。
我绝对不是这个话题的专家,我更像是一个前端的开发者。尽管如此,我认为这一点回答了你的问题。
在这里,我发送了一个类似问题的链接,其中很好地解释了为什么更喜欢DTO而不是生殖器。
https://stackoverflow.com/a/49914242/8366174