smRt-Egg / book-ddd-start

📔 도메인 주도 개발 시작하기 스터디 저장소
5 stars 0 forks source link

5장 스프링 데이터 JPA를 이용한 조회 기능 #5

Closed tidavid1 closed 9 months ago

tidavid1 commented 10 months ago

5장 스프링 데이터 JPA를 이용한 조회 기능을 읽고 코멘트를 남겨주세요

happyjamy commented 10 months ago

도메인 모델에 서비스 기능과 관련있는 필드들을 추가해야 될까? 도메인과 관련 있지만 늘 쓰이지 않고 다른 테이블에 있는 필드들. 보통 @OneToMany 경우.

예를 들어, 게시글에서

  1. 스크랩 수
  2. 조회 수
  3. 좋아요 수
@Basic(fetch = FetchType.LAZY)
@Formula("(select count(1) from user_scrap s where s.scrap_lost_id = id)")
private int scrapCount;

경민 굳이 필수적이지 않은 부분에 대해서는 필드로써의 활용보다 메소드로 호출하여 결과를 리턴해주는 형식이 DDD에 조금 더 걸맞지 않을까? 라는 생각입니다.

수진 도메인 모델에 서비스 기능 관련 필드를 넣는 것이 좋다고 생각합니다. 도메인에 이 필드가 포함되어있다는 걸 명시적으로 보여주는 게 중요하다고 생각하기 때문입니다. 아예 쓰지않는 필드도 아니고 쓸 가능성이 있는 필드라면 넣어야한다고 생각합니다.

용상 웬만해선 도메인에 넣을 것 같습니다. 엄연히 도메인과 관련성이 있는 필드들이고, 추후에 성능향상 등의 이슈가 있을 때, 분리해서 조회용 도메인을 만들지않을까 생각합니다.

승수 저라면.. 처음 설계할 때 필요할 수 있는 기능이다라고 합의가 되어있으면 작성을 하지만, 그러지 않다면 먼저 만들지는 않을 것 같습니다. 좋아요 수를 예로 들면 우리가 좋아요라는 기능을 만들 예정이라면 미리 만드는 것이 좋겠지만, 그런 것이 아니라면 굳이 만들어야하나? 라는 의문입니다.

지인 도메인과 관련이 있는 필드라면 늘 쓰이지 않더라도 명시적으로 사용된다라는 것을 보여주기 위해서 추가하는 것이 좋다고 생각합니다.

suzzingV commented 10 months ago

동적 인스턴스를 사용하기 위해 @Query에 JPQL을 길게 늘어뜨려 적는 것이 맞는지

경민 https://www.inflearn.com/questions/38771/querydsl과-jpql을-선택하는-차이가-궁금합니다 → QueryDSL은 신이고 무적이야

지인 22

승수 QueryDsl. 나의 빛. 나의 영혼. 동적쿼리는 QueryDsl. 컴파일 에러로 해결 가능

용상 특별한 제한이 없으면 동적쿼리는 querydsl을 사용할것 같습니다.

주환 하지만 러닝커브가 있기에 공부하기 힘들면 굳이 모르는 채로 쓰기보단 되는거 쓰자

tidavid1 commented 9 months ago

전반적인 구현 관련 내용이 주를 이루는 챕터로 Specification에 대해서 알아 볼 수 있었던 좋은 기회였다. Specification을 활용하는 경우나 페이지네이션을 진행할때 Page<> 구현체를 사용하면 Count 쿼리를 계속 호출하게 되는데 이 부분을 성능과 정보 입장에서 바라봤을 때 어떻게 활용하는 것이 좋을지 고민 해봐야 할 것 같다.

YongNyeo commented 9 months ago

레포지토리 레이어에서 검색시 조금 더 효율적으로 접근할 수 있는 방법에 대해 알아볼 수 있는 챕터였다. Specification는 처음 봐서 조금 생소했지만 , 기존에 알던 다른 효율적인 방법을 다시 생각해볼 수 있는 기회였다.

JIN-076 commented 9 months ago

Specification 개념을 처음 접했는데, 이번 기회를 통해서 Specification에 대한 전반적인 이해와, 동적 쿼리를 수행할 수 있는 여러 방식의 성능에 대해서 비교하고 이해할 수 있는 챕터였다.

voidmelody commented 9 months ago

Specification에 대해 처음 알 수 있는 시간이었다. 페이징도 레포지토리의 인자로 활용해 볼 수 있음을 알 수 있었다.