2023.01.11.WED

ronglong·2023년 1월 11일
0

[기술면접]

  • 선택한 질문 및 준비 내용
    • DTO 클래스의 Request Body에 대한 유효성 검증 방법에 대해서 설명
      • 빌드.그레이들 파일의 디펜던시에 벨리데이션 라이브러리 추가
      • Jakarta Bean Validation이라는 유효성 검증을 위한 내장 애너테이션 사용
      • Jakarta Bean Validation 스펙을 구현한 구현체가 바로 Hibernate Validator
      • Java Bean 스펙을 준수하는 Java 클래스라면 애너테이션을 사용해서 유효성 검증 가능
      • @Valid @RequestBody
      • Custom Validator: Custom Annotation 정의, ConstraintValidator 인터페이스 구현
      • 유효성 검사는 API 계층뿐만 아니라, 서비스 계층에서도 해주는 게 좋다고 함. 나중에 프로젝트에서는 어떻게 처리할지 고민해볼 사항인 것 같다.
        https://chiki-cha.tistory.com/150
    • JPA의 영속성 컨텍스트에 대해서 설명
      • 엔티티를 영구 저장하는 환경
      • 어플리케이션과 DB사이에서 객체를 보관하는 가상의 DB
      • 1차 캐시, 쓰기 지연 SQL 저장소
    • Given - When - Then 패턴에 대해서 설명
      • BDD(Behavior Driven Development)라는 테스트 방식
      • 준비 과정 / 테스트 할 메서드 호출 / 검증

[기타]

  • JPA 엔티티 매핑
    • @ManyToOne 이 우선.
    • @OneToMany, @OneToOne의 경우, attribute로 (mappedBy = "연관 클래스에서 참조하는 객체명")를 사용하는데, 이는 '해당 클래스가 연관된 클래스에서 ~로 참조되고 있다'는 뜻으로 해당 클래스(one)가 다른 클래스에 객체(외래키)로 참조되고 있음을 의미한다.
    • 즉, 관계를 가진 것, 관계의 주인은 외래키를 가지고 있는 쪽이다.
      https://ict-nroo.tistory.com/122
    • 엔티티 매핑할 때는 attribute로 cascade도 고려해야한다.
      - @Mapping 을 이용한 수동 매핑 (source, target ...)
      https://www.skyer9.pe.kr/wordpress/?p=1603
    • default 메서드를 이용한 수동 매핑 (과제에서 작성)
default Order orderPostDtoToOrder(OrderPostDto orderPostDto) {
        Order order = new Order();
        order.setMember(orderPostDto.getMember());
        List<OrderCoffee> orderCoffees = orderPostDto.getOrderCoffees().stream()
                .map(orderCoffeeDto-> {
                    OrderCoffee orderCoffee = new OrderCoffee();

                    orderCoffee.setOrder(order);
                    orderCoffee.setQuantity(orderCoffeeDto.getQuantity());

                    Coffee coffee = new Coffee();
                    coffee.setCoffeeId(orderCoffeeDto.getCoffeeId());

                    orderCoffee.setCoffee(coffee);

                    return orderCoffee;
                }).collect(Collectors.toList());

        order.setOrderCoffees(orderCoffees);
        return order;
    }

<느낀 점>
섹션 3 끝났다. 어떻게 지나갔는지 모르겠음...

원래는 오늘 그동안 블로그에 갈겨 쓴 나의 깜지들^^을 한 번 쭉- 훑어보려고 했는데,
오전에 기술면접 하고, 오후에 못 했던 JPA 과제하고, 미니 잡서칭하고, 블로깅하고, 프로그래머스 몇 문제 풀고나니까 지금(오후 5시 37분)이다.
오늘 저녁에도 공부하는 게 좋지만,, 개발 관련 책 읽는 걸로 대체할랭,,

섹션 3에서 가장 큰 수확(?)은 토란을 캐냈다는 것..?
마지막에 유능하고 좋은 페어를 만나서, 오늘도 jpa 과제 1시간동안 질문함..ㅎ
ㄹㅇ 스승님을 만났다.
구황작물 팸,, 늘 감사할 뿐⭐️

동기 파워로 섹션4도 완주해야겠다.
프로젝트 하면서 ㄹㅇ 몸빵으로 배울 것 같다는 게 벌써 느껴짐...ㅋㅋ
올해 꼭 취뽀하쟈.

0개의 댓글