@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

위의 코드에서 칼럼의 이름은 _id 고 적어주는건 왜 그냥 user로 적을까?

https://www.erdcloud.com/d/XJi9uZn2eqpnRxjfQ

**클래스는 명사로 시작**하고 **메소드는 동사로 시작**해야함


@RequiredArgsConstructor
public class TestService {

		private final RefreshTokenRepository refreshTokenRepository;
    private final JwtTokenProvider jwtTokenProvider;
    private final JwtProperty jwtProperty;

}

왜 이렇게 final로 DI를 해줄까??

불변해야 하는 것들은 final로 선언해서 명확하게 해줘야 한다


Dto에 왜 @NoArgsConstructor를 쓸까??

@Getter
@NoArgsConstructor
public class UserRequest {

    @NotBlank(message = "id 에는 공백이 없어야 합니다.")
    private String accountId;

    @NotBlank(message = "password 에는 공백이 없어야 합니다.")
    @Size(min = 8, max = 60)
    private String password;

    @NotBlank
    private String name;

    @NotNull
    private Long studentId;

}

스프링부트 스타터에는 jackson 라이브러리가 포함돼 있는데

jackson은 직렬화(객체 → Json)할 때는 getter를 사용하고

역직렬화(Json → 객체)할 때는 기본 생성자와 setter를 사용