Cascade
@OneToMany(mappedBy = "user", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private List<Post> postList;
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 객체로 변환하는 역할을 한다.