TIL 240528

오지석·2024년 5월 28일
0

Newsfeed api 만들기에 대한 피드백

ResponseDto

생성, 수정된 엔터티의 모든 값을 응답으로 주는 이유가 있을까요? 필요하다면 명확한 이유가 있었으면 좋겠습니다.
-> 생성이나 수정이 입력된 값으로 성공했다는 것을 알려야한다고 생각했다.
-> 일반적으로는 생성이 완료됐을 때 클라이언트 쪽에서 돌아가는 곳은 목록 혹은 상세페이지이다.
id를 주는 케이스는 클라이언트가 바로 생성된 id의 상세 조회를 할 수도 있기 때문에

table의 column이름

용어 통일 어떤 테이블의 id인지 명시하는게 확장성의 관점에서 좋다 (member_id)

List<String> 를 Column에 넣는 방법

Jpa deserialize 하는 부분 찾아보기
1. 간단한 List라면 @ElementCollection 을 사용
2. @Converter 사용해보기

어떻게 하면 더 업무분담을 잘 할 수 있을까?

  1. 요구사항을 매우 엄격하게
  2. 로그인에 대한 interface
    -> 로그인 인증 email password
    -> OAuth 소셜 로그인
    interface를 잘 정의하면 해당 interface에 대한 구현체를 병렬적으로 개발할 수 있다.

Soft Delete

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의 사이즈가 커져도 괜찮은걸까요?

Entity를 풍부하게
Rich Domain Model

0개의 댓글