😕2023.01.23

일일 회고 159일차

할일 및 한일

경험 및 배움

스프링 부트 & JPA 강의 학습

오늘은 프로젝트의 웹 계층, 즉 컨트롤러가 존재하는 부분을 구현해보았다.

부트스트랩을 이용하여 템플릿을 가져온 후, 실습 파일에 존재하는 html과 css를 추가하였다.

요구사항을 구현할 때, 강의에서는 엔티티에서 직접 데이터를 가져와서 사용하는 것이 아니라, 중간에 Form 을 두고 그것을 통해서 작업을 진행하였다.

그 이유는, 화면 요구사항이 복잡해지기 시작하면, 엔티티에 화면을 처리하기 위한 기능이 점점 증가한다고 한다. 결과적으로, 엔티티는 점점 화면에 종속적으로 변하고, 이렇게 화면 기능 때문에 지저분해진 엔티티는 결국 유지보수하기 어려워진다.

따라서, 실무에서는 비즈니스 로직만 갖고 있고, 엔티티에 화면을 위한 로직(ex) 유효성 점검 등)은 없어야 한다.

엔티티서 직접적으로 데이터를 사용하지말고, 다음과 같이 폼 객체나 DTO를 사용해서 처리해야 한다고 한다.

@PostMapping("/members/new")
public String create(@Valid MemberForm form, BindingResult result) { // @Valid -> 유효성 검증 어노테이션을 이용해 검증해준다.

    if (result.hasErrors()) {
        return "members/createMemberForm";
    }

    Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode());

    Member member = new Member();
    member.setName(form.getName());
    member.setAddress(address);

    memberService.join(member);
    return "redirect:/"; // 첫 번째 페이지로 넘어감
}

자세한 학습 내용을 정리한 링크는 다음과 같다.

개선 및 목표

  • 내일은 남은 JPA 강의를 모두 마무리하자.

Last updated