최근 내 개인프로젝트를 준비하면서 mybatis를 버리고 JPA 도입했다. 그 과정에서 객체를 담당하는 클래스를 VO에서 Entity로 바꾸는 과정이 있었는데, 솔직히 암만 봐도 같은 기능인데 차이점이 뭐길래 이름을 바꾸는가 궁금해서 알아왔다.
public class Money {
private final int amount;
public Money(int amount) {
this.amount = amount;
}
public int getAmount() {
return amount;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Money money = (Money) o;
return amount == money.amount;
}
@Override
public int hashCode() {
return Objects.hash(amount);
}
}
public class UserDTO {
private String name;
private int age;
public UserDTO(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int age;
// Getters and Setters
}
뭐 알고 보니까 결국 따지고 보면 같은 기능이라고 느껴지긴하지만 타인이 코드를 볼 때, 의도를 조금 더 구분하기 쉬우려고하는 목적이 있는 것 같다.