[Refactor] @Builder 상속 및 하위 리팩토링

Coodori·2023년 12월 11일

Back-end

목록 보기
2/4

고민을 하게 된 계기

원래는 Arist 라는 하나의 엔티티에 자기 참조를 걸고

그룹이던 솔로가수던
음악은 아티스트만을 참조하게 하였고
그룹가수면 상위 아티스트 엔티티를 연관시켜주었다.(솔로 아티스트면 연관없이 생성 끝.)

그러고 List<ArtistDto>의 길이에 따라 1개면 솔로 가수, 여러개면 첫번째 그룹, 이후는 가수로 코드를 짰었다.
(물론 이 작동 방법을 알면 정상 작동한다.)

하지만 여러명이 함께 코드를 짜면서 많은 혼란을 줄 수 있다는 생각을 했다.
그리고 total_count 로 그룹을 판단하는 것 보단 나중에 인덱스를 걸고 Solo, Group 분리하는 것이 좋다고 생각을 했다.

그래서 그룹과 가수로 분리하는 리팩토링을 하게되었다.

하지만 뮤직에 연관되는건 Group 일 경우 그룹 우선이고 SoloArtist 이후 이다.

  1. 가수와 그룹을 분리한다.
  2. 가수는 무조건 한명이다.
  3. 그룹은 인원수도 세야한다.
  4. 노래에는 가장 대표 가수 혹은 그룹이 나와야한다.

리팩토링 시작

일단 전략은 싱글테이블 전략을 사용 하였다.

서비스 규모가 크지 않고, 굳이 조인 전략을 선택해서 복잡하게 갈 필요가 없다고 판단했다.
dtype으로 구분이 가능하며 INSERT 쿼리도 한 번, SELECT 쿼리도 한 번이다.
조인할 필요가 없고, 성능이 좋다.

그리고 이제 본래 Artist에 걸려있던 @Builder를 고쳐야한다.

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640

0개의 댓글