DTO는 애플리케이션에 복잡성을 추가할 수 있지만 계층도 마찬가지입니다. DTO는 시스템의 값비싼 기능이며 무료로 제공되지 않습니다.
보통 Service 또는 Controller 에서 변환 작업을 수행하게 되는데 정확히 정답은 없어보입니다. Service 또는 Controller Layer에서 수행해야 한다고 주장하는 각각의 이유가 나름 일리가 있어보입니다.
Service에서 처리 :
Controller에서 처리 :
개인적으로는 Controller에서 처리하는게 더 적합하다고 생각하는데 상황에 맞게 변할수도 있겠네요.
import java.io.Serializable;
class EmployeeDto implements Serializable {
private static final long serialVersionUID = 1L;
private long id;
private String firstName;
private String lastName;
private String email;
//getter, setter
}
@Entity
@Table(name = "employees")
class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private long id;
@Column(length = 40, nullable = false)
private String firstName;
@Column(length = 40, nullable = false)
private String lastName;
@Column(length = 100, nullable = false)
private String email;
}
implementation 'com.fasterxml.jackson.core:jackson-databind:2.0.1'
// Conversion from Entity to DTO
private EmployeeDto convertToDto(Employee employee) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(employee, new TypeReference<EmployeeDto>() {});
}
// Conversion from DTO to Entity
private Employee convertToEntity(EmployeeDto employeeDto) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(employeeDto, new TypeReference<Employee>() {});
}
https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html
https://champcoder.com/entity-to-dto-and-dto-to-entity-conversion-in-spring-boot/
https://entityframework.net/knowledge-base/21554977/should-services-always-return-dtos--or-can-they-also-return-domain-models-