Java DTO的最佳设计是什么?
这是我的实体类Java DTO的最佳设计是什么?,java,spring,jpa,Java,Spring,Jpa,这是我的实体类 @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(updatable = false, insertable = false) private int id; @Column(nullable = false, updatable = fals
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(updatable = false, insertable = false)
private int id;
@Column(nullable = false, updatable = false)
private String name;
@Column(nullable = false, unique = true, updatable = false)
private String email;
@Column(name = "nick_name", nullable = false, unique = true, updatable = false)
private String nickName;
@Column(name = "image_url")
private String imageUrl;
User() {
}
public User(int id, String name, String email, String nickName, String imageUrl) {
this.name = name;
this.email = email;
this.nickName = nickName;
this.imageUrl = imageUrl;
this.id = id;
}
//getters
}
首先,我认为应该基于业务逻辑创建单独的DTO。
比如说,
用于创建的命名DTO
public class CreatingUser {
private int id;
private String name;
private String nickName;
private String emaial;
private String imageUrl;
//getters and setters
}
但问题是,它是由许多对象创建的,很难命名(例如,CreatingUser、CreatingUserWithImage…等等)。
我可能正在为DTO创建许多服务和转换
现在,
我只使用一个dto,但我认为这不是最好的方法
给我一些建议。创建DTO的最佳实践是为应用程序中的每个请求创建DTO。例如,用于更改密码“ChangingPasswordRequest.java”的DTO仅具有以下属性:
public class ChangingPasswordRequest {
private String password;
private String passwordConfirm;
//getters and setters
}
您可以创建任意数量的dto,并将其命名为操作,如ChangingPasswordRequest.java或EditUserProfileRequest.java或AddWhateverRequest.java
如果某些DTO具有相同的属性(相同的代码),则可以按父类使用继承,并从子类扩展继承。将单一责任作为优先事项,并创建所需数量的DTO。因为您“必须”必须按照要求创建DTO。为什么会混淆?许多DTO都有相同的字段,它们需要类似的转换和服务。是吗?谢谢你的回答:)
public class ChangingPasswordRequest {
private String password;
private String passwordConfirm;
//getters and setters
}