[Java] dto와 entity 변환하기 -1

개발개발·2021년 6월 10일
0

서버를 다루면서 dto와 entity를 변환해주는 일이 많았다. 그동안 변환방법을 편하게 하기 위해서 공부했던 과정들을 적어본다.

목차
1. @Builer를 사용해서 dto또는 entity에 변환하는 메소드 생성하기
2. ObjectMapper를 사용해서 변환하기
3. 제네릭메소드를 활용(2번의 수정)

  • UserEntity
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;}
    
}
  • usersDto
@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();
    }
}

장점(개인적인 생각)

  • 하나하나 수작업으로 진행하기때문에 dto나 entity의 특성에 맞춰서 변환할때 용이하다.(만들기는 어렵지만 사용할때는 편하다)

단점

  • 코드량이 너무 많아진다.
profile
청포도루이보스민트티

0개의 댓글