2021-07-28

0728 JPA와 API

 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번 궁금증 해결!!!

현재 컨트롤러의 컨스트럭터는 RequiredArgs만 있고, 디폴트 컨스트럭터가 없다
따라서 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컨스트럭터로 인스턴스를 동적으로 생성.
인스턴스의 정확한 클래스를 몰라도 만들어낼수있다
??

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...