회원가입을 위해 enum 생성
인서트시 쿼리가 실행될 때 null값이 들어가면 @DynamicInsert로 널값은 인서트에서 제외할 수 있다. 하지만 계속 이 annotation을 계속붙히기에는 양이 너무 광범위해진다.
role값에 null이 아닌 디폴트값이 들어간 것을 볼 수 있다.
@Enumerated
set값으로 직접 설정하면 잘못 설정할 수 있으므로 Enum클래스를 파서 그곳의 값을 사용하는게 좋다.
#id로 셀렉트
GET 요청 시 {}안에는 주소로 파라미터를 전달받을 수 있음
findById가 Optional이 리턴값인 이유, 못찾으면 user가 null
값이 되므로 문제가 생길 수 있으니 Optional로 너의 유저 객체를 감싸서 가져올테니 null인지 아닌지 판단해서 리턴해라.
Optional 에 여러기능이 있음
.get() : 값을 그대로 리턴하기, 위험
.orElseGet() : 값이 null일 경우 @Override 를 통해 빈 객체 반환
.orElseThrow() : null일 경우 예외 메세지등을 보내기
User객체는 Java Object인데 웹 브라우저는 User 객체를 이해하지못함,html등만 이해가능
User 객체, Java Object 가 리턴이 될 때 웹브라우저가 이해할 수 있는 데이터로 변환하는것, json으로 변환,(Spring에서는 Gson라이브러리로 json으로 변경함, Springboot는 Message Converter 가 응답시에 자동으로 작동함, Java Object를
리턴하게되면 Message Converter가 Jackson이라는 라이브러리를 호출해서 User객체를 json으로 변환해서 브라우저에게 던져준다.
개발자 도구를 통해 응답 타입이 json으로 반환된 것을 확인할 수 있다.