2022 09 27 - WIYA-waitinyourarea/wiya GitHub Wiki

2022-09-27 회의록

1. @ModelAttribute의 대상과 검증

@PostMapping("url")
public String 컨트롤러메소드(Member member){
    return "...";
}
  • 컨트롤러 메소드에 아규먼트로 Entity 객체를 줘도 바인딩이 되는 이유는?

    • 위와 같은 경우 Member member 앞에 @ModelAttribute("member)가 생략된 상태
    • 해당 메소드를 사용하는 스프링mvc의 핸들러 어뎁터에서 해당 member 객체에 파라미터명이 일치하면 setXXX()를 해줌
  • 그렇다면 검증처리는 어떻게 해야될까?

    • 검증처리는 보통 폼태그에서 넘어온 파라미터나 데이터들이 올바른지 검증하는 것
    • createupdate를 하는 폼에서 검증 내용이 다를 수 있고
    • @ModelAttribute로 바인딩해줘야되는 필드가 달라질 수 있다
    • 따라서 각각 createupdate를 하는 DTO를 따로 만듦
    • 그리고 각각에 DTO에 상황에 맞는 Bean Validation적용

2. 장터, 게시글, 병원 저장 시, 연관관계인 이미지저장 순서

  • 각각의 이미지 테이블에는 해당되는 장터, 게시글, 병원의 PK가 FK로 참조된다.
  • 따라서, 이미지 엔티티 객체를 생성하기 전에, 장터, 게시글, 병원의 엔티티 객체를 먼저 생성해야한다.
  • 그 생성된 부모 객체를 persist()하여 영속성 컨텍스트에 의하여 관리하고
  • 그에 해당되는 자식 객체인 이미지의 객체를 만들면서 그 부모 객체를 필드로 지정해주고, 자식 객체도 persist()하여, 영속성 컨텍스의하여 관리
  • 이 과정은 하나의 트랜잭션안에 있어야함
  • commit이 되면 flush되면서 게시판 레코드 생성 → 게시판 이미지 레코드 생성