12월 15일 금 TIL

장숭혁·2023년 12월 18일
0

TIL작성

목록 보기
32/60

Cascade

@OneToMany(mappedBy = "user", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<Post> postList; 
  • JPA에서 엔티티 간의 연관 관계에서 부모 엔티티의 상태 변경이 자식 엔티티에 영향을 주는 방식을 정의하는데 사용된다.
  • CascadeType은 이러한 영향의 종류를 지정하는데, 주로 부모 엔티티의 변경이 자식 엔티티에 어떤 영향을 미칠지를 설정하는 것이다.
    - CascadeType.PERSIST : 이 설정은 부모 엔티티가 영속화될 때 자식 엔티티도 함께 영속화되도록 하는 것이다. 즉, 부모 엔티티가 저장될 때 자식 엔티티도 함께 데이터베이스에 저장된다.


    @EntityGraph

     @EntityGraph(attributePaths = "user")
    Optional<Post> findFetchJoinUserById(Long id);
  • JPA(Entity JPA)에서 엔티티를 조회할 때 특정 엔티티의 연관 관계를 한 번에 같이 조회(Eager Loading)할 수 있게 해주는 기능이다.
  • @EntityGraph를 사용하면 한 번의 쿼리로 주 엔티티와 연관된 엔티티를 함께 조회한다(->EAGER loading)
  • attributePaths 속성을 사용하면 어떤 연관 관계를 즉시 로딩할 것인지 지정할 수 있다.

objectMapper.readValue() 메서드

  • JSON 문자열을 Java 객체로 변환하는 역할을 한다. 이 메서드는 첫 번째 인자로 JSON 문자열을, 두 번째 인자로 변환할 대상 클래스의 Class 객체를 받는다.
public Optional<JwtUser> getJwtUser(String token, String type)  {
        try {
            if (token == null || !token.startsWith("Bearer")) return Optional.empty();

            token = removePrefix(token);
            if (!validateToken(token)) return Optional.empty();

            Claims jwt = getCustomerClaim(token);
            var jwtUser = objectMapper.readValue(jwt.get("user", String.class), JwtUser.class);

            String tokenType = jwt.get("type", String.class);
            if (!tokenType.equals(type)) return Optional.empty();

            return Optional.of(jwtUser);

        } catch (JsonProcessingException ex){
            return Optional.empty();
        }
    }
  • jwt.get("user", String.class)는 JWT 토큰의 claims 에서 "user" 키에 해당하는 값을 가져오는 메서드이다. 이 메서드는 두 번째 인자로 주어진 클래스 타입(String.class)으로 값을 변환하여 반환한다. 여기서는 "user" 키에 해당하는 값이 JSON 문자열이므로, 이를 String 타입으로 가져온다.
  • JwtUser.class는 JwtUser 클래스의 Class 객체를 나타낸다. Class 객체는 클래스의 메타데이터를 담고 있으며, 클래스의 이름, 부모 클래스, 인터페이스, 메서드, 필드 등의 정보를 제공한다.
  • 여기서는 JwtUser.class를 통해 objectMapper.readValue() 메서드에게 JSON 문자열을 JwtUser 객체로 변환하도록 지시하고 있다.
  • 따라서, var jwtUser = objectMapper.readValue(jwt.get("user", String.class), JwtUser.class); 코드는 JWT 토큰의 "user" claim을 JSON 문자열로 가져와 이를 JwtUser 객체로 변환하는 역할을 한다.
profile
코딩 기록

0개의 댓글

관련 채용 정보