1. Entity 와 API Spec을 분리한다
2. DTO -> Entity로 변경 한후 저장하는 방식 사용하기(반드시!)
3. why??
1) 프레젠테이션 레이어와 DB레이어를 분리하여 결합도를 낮춘다.
2)Entity Spec이 변경되더라도 API영역에 영향이 없기 때문에 파급효과가 줄어든다.
3) valid로직을 구현할 경우 API영역에서만 처리하면 된다!
4. Entity를 외부에 노출하지 말자!!
5. 둘을 따로따로 분리해서- 자율적이고 독립적으로 협업하도록 만든다!
------------------------------------------------------------
non-static inner classes like this can only by instantiated using default
-> inner클래스를 static클래스로변경해봄. but...
Cannot construct instance of `jpashop.jpabook.api.MemberApiController
$CreateMemberRequest` (although at least one Creator exists):
cannot deserialize from Object value (no delegate- or property-based Creator);
nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException:
-> default 컨스트럭터를 만들어봄
이렇게 안하고 그냥 아예 public한 class로 만들고 - member클래스에 name 컨스트럭터 추가해서 만들었을 땐 문제 없었는데
.
궁금증
1) inner클래스 제약??
2) default constructor왜 필요하지?
----------------------------------------------------------
1번 궁금증 해결!!!
따라서 inner클래스를 불러오게된다면
https://stackoverflow.com/questions/12690128/how-to-instantiate-non-static-inner-class-within-a-static-method
<<이렇게!!!
해서 static으로 해야만 inner클래스를 직접 불러올 수 있다
-----------------------------------------------------------
2)에 대해서 일단 내가 이해한것
ObjectMapper ( JSON으로 직렬화, 역직렬화 해주는 녀석)
는 JSON으로 변환하기 위해서 자바 reflection이용.
자바 reflection은 Object클래스로 불러온다음에 -
일단 NoArgs컨스트럭터로 인스턴스를 동적으로 생성.
인스턴스의 정확한 클래스를 몰라도 만들어낼수있다
??
댓글 없음:
댓글 쓰기