Newsfeed api 만들기에 대한 피드백
생성, 수정된 엔터티의 모든 값을 응답으로 주는 이유가 있을까요? 필요하다면 명확한 이유가 있었으면 좋겠습니다.
-> 생성이나 수정이 입력된 값으로 성공했다는 것을 알려야한다고 생각했다.
-> 일반적으로는 생성이 완료됐을 때 클라이언트 쪽에서 돌아가는 곳은 목록 혹은 상세페이지이다.
id를 주는 케이스는 클라이언트가 바로 생성된 id의 상세 조회를 할 수도 있기 때문에
용어 통일 어떤 테이블의 id인지 명시하는게 확장성의 관점에서 좋다 (member_id)
Jpa deserialize 하는 부분 찾아보기
1. 간단한 List라면 @ElementCollection
을 사용
2. @Converter
사용해보기
soft delete를 기본으로 생각해야한다.
일회성 데이터에 대한 것이라면 굳이지만,
코어 엔티티의 가치는 너무나 높다.
ex) reddit의 게시글들이 머신 러닝의 재료로 사용된다거나 하는 점
비즈니스가 커질 수록 코어 엔티티의 id는 의존성이 높아진다.
instant? localdate? 서로 parsing 가능하니 크게 상관없다.
Auditing cascade 과 같은 프레임워크 기능을 직접 사용하기보다
framework에 의존적이지 않은 시스템을 만드는 쪽이 최근의 추세다.
testcode 작성
프레임워크 없이 테스트하는 것을 지향
직접 주입하지 않으면 테스트가 불가능해진다.
Controller Layer에서 @Valid
나 dto 내부에서 @field:Size
같은 annotation도 비슷한 맥락에서 쓰지 않으시나요?
그렇다.
예를들어, 10자를 넘기면 안된다라는 정책이 있다면 database 에도 contraint를 걸고
Entity에 불변식(반드시 지켜져야할 식)들을 정의해야한다.
Controller -> Serivce -> Entity
Entity는 Controller가 뭘하는지 알 수 없다.
Entity 입장에선 검증 로직이 없다. 가장 중요한 모델이 보호 받지 못한다.
생성 패턴
엔티티에 팩토리 메소드(of, create)를 정의하고 생성할 때는 반드시 사용하도록 한다.
생성하기 위한 값을 parmeter를 받고 내부에서 검증
Entity를 풍부하게
Rich Domain Model