엔티티 자체를 폼으로 쓰는 경우 문제점.
Entity가 화면을 처리하기위한 코드가 증가함
- 화면에종속적으로 된다.
- 결국엔 유지보수가 어려워진다.
- 최대한 핵심 비지니스 로직에만 의존되도록 하는게 좋음.
- 여러 군데에서 유연하게 사용하더라도 유지보수가 좋아진다.
- 화면에 맞는 api는 form 객체나 DTO를 통해서 진행하는게 맞다.
결론 : Entity는 최대한 순수하게 유지시켜야한다.
@GetMapping("")
public String list(Model model){
List<Member> members = memberService.findMembers();
model.addAttribute("members",members);
return "members/memberList";
}
현재 강의의 경우에는 간단한 예제를 통해서 진행되기 때문에 현재 엔티티를 건들지 않아도 되서 사용했지만
만약 복잡하게 연결되있을 경우 DTO를 통해서 값을 가져와서 해주는게 좋습니다.
API를 만들때에는 절대 Entity를 외부로 반환하면 안된다.
- 만약 entity를 외부에 노출된다면 entity에 필드를 추가할 경우 api 스펙이 변화가 생김.
- 다른 팀에서 이 api를 사용하는 경우 api 스펙 변화에 따른 오류가 발생하게 되고 그 문제를 수정하는 작업이 발생한다.
- 그렇기 때문에 Entity를 외부로 반환하지 않고 그대신 DTO 를 통해서 반환을 해서 규격을 만들어서 entity 필드를 수정하더라고 DTO의 값은 변하지 않기 때문에 api 스펙은 변하지 않는다.
DTO(Data Transfer Object) : 계층간 데이터 교환을 하기 위해 사용하는 객체 -> 로직을 가지지 않는 순수한 객체 클래스로 데이터 교환을 위해서 사용된다.