서버를 다루면서 dto와 entity를 변환해주는 일이 많았다. 그동안 변환방법을 편하게 하기 위해서 공부했던 과정들을 적어본다.
목차
1. @Builer를 사용해서 dto또는 entity에 변환하는 메소드 생성하기
2. ObjectMapper를 사용해서 변환하기
3. 제네릭메소드를 활용(2번의 수정)
public class UserEntity {
private int id;
private String token;
private String password;
private Date regDate;
private String email;
@Builder
public UsersEntity(int id, String token, String password, Date regDate, String email) {
this.id = id;
this.token = token;
this.password = password;
this.regDate = regDate;
this.email = email;
}
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {return id;}
public void setId(int id) {this.id = id;}
@Basic
@Column(name = "token")
public String getToken() {return token;}
public void setToken(String token) {this.token = token;}
@Basic
@Column(name = "password")
public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
@Basic
@Column(name = "reg_date")
public Date getRegDate() {return regDate;}
public void setRegDate(Date regDate) {this.regDate = regDate;}
@Basic
@Column(name = "email")
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
}
@Data
@NoArgsConstructor
public class UsersDto {
private int id;
private String token;
private String password;
private Date regDate;
private String email;
@Builder
public UsersDto(int id, String token, String password, Date regDate, String email) {
this.id = id;
this.token = token;
this.password = password;
this.regDate = regDate;
this.email = email;
}
처음에는 dto 클래스에 정적메소드로 변환하는 메소드를 만들었다.
@Data
@NoArgsConstructor
public class UsersDto {
private int id;
private String token;
private String password;
private Date regDate;
private String email;
@Builder
public UsersDto(int id, String token, String password, Date regDate, String email) {
this.id = id;
this.token = token;
this.password = password;
this.regDate = regDate;
this.email = email;
}
public static UsersEntity converter(UsersDto usersDto){
if(usersDto == null) return null;
return UsersEntity.builder()
.token(usersDto.getToken())
.password(usersDto.getPassword())
.regDate(usersDto.getRegDate())
.email(usersDto.getEmail())
.build();
}
}
장점(개인적인 생각)
단점