Skip to content
This repository was archived by the owner on Jan 11, 2026. It is now read-only.

[REFACOR] 회원 도메인 모델 구축 및 패키지 구조 재정립#7

Merged
msk226 merged 17 commits into
developfrom
SPOT-277/refactor
May 1, 2025
Merged

[REFACOR] 회원 도메인 모델 구축 및 패키지 구조 재정립#7
msk226 merged 17 commits into
developfrom
SPOT-277/refactor

Conversation

@msk226
Copy link
Copy Markdown
Member

@msk226 msk226 commented Apr 30, 2025

#️⃣ 연관된 이슈


🔎 작업 내용

  • 본격적인 리팩토링 작업을 시작했습니다~!
  • 이번 PR에서는 기존 레거시 코드에서 회원 도메인에 해당하는 클래스들을 정리하고, 도메인 중심으로 구조를 재구성했습니다
  • 회원 애그리거트에 속한다고 판단한 선호 지역, 관심사, 선호하는 스터디 관련 클래스들도 함께 회원 도메인 하위로 이동시켰습니다.
  • 그에 맞게 repository, service, web 계층의 코드도 함께 적절하게 재구성했습니다.
  • 마지막으로, 공통적으로 사용되는 클래스들을 refactor.common 패키지로 이동하여 구조를 명확히 정리했습니다.

++ 아직 선호하는 스터디의 service, web 계층의 코드(스터디 찜하기)는 건드리지 않았습니다! 한번에 옮기기에는 조금 고려할 부분이 많을 것 같아서 이 부분은 다음 단계에서 반영하려고 합니다.

+++ 제가 한 번 해보니까 클래스 명 뒤에 V2는 굳이 안붙여도 될 것 같아요! 이런 느낌으로 리팩토링 해보는게 어떨까요?!


📷 스크린샷 (선택)

작업한 결과물에 대한 간단한 스크린샷을 올려주세요.


💬리뷰 요구사항 (선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요.

저는 "애그리거트에 속한다"의 기준을 다음과 같이 생각하고 있습니다.

  1. 도메인 엔티티(예: Study)가 생성될 때 같이 만들어지는가?
  2. 도메인 엔티티가 삭제될 때 같이 사라지는 객체인가?
  3. association의 경우, 어떤 도메인 엔티티의 의지(?)를 통해 생성/삭제되는가?

위 기준으로 바라봤을 때, 선호 지역, 관심사 및 선호하는 스터디 이 3개가 Member 애그리거트에 속하는 구성요소라고 생각 했습니다.

이 부분에 대해서 동의 하시는지, 혹시 누락된 부분이 있는지 의견 남겨주시면 감사하겠습니다!

msk226 added 16 commits April 30, 2025 19:48
@msk226 msk226 added the ♻️ refactor Code Refactoring label Apr 30, 2025
@msk226 msk226 self-assigned this Apr 30, 2025
@msk226 msk226 linked an issue Apr 30, 2025 that may be closed by this pull request
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR initiates a refactoring of the member domain model by updating import paths to use the new refactored packages and reorganizing domain associations. Key changes include:

  • Migrating BaseEntity and association imports from the legacy packages to the refactor packages.
  • Updating member domain references to the new package structure.
  • Removing redundant exception handler classes.

Reviewed Changes

Copilot reviewed 197 out of 197 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/main/java/com/example/spot/legacy/domain/Theme.java Updated BaseEntity and MemberTheme imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/StudyReason.java Updated BaseEntity import and added new import for Member from refactor.
src/main/java/com/example/spot/legacy/domain/Region.java Updated BaseEntity and PreferredRegion imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/Quiz.java Added import for Member from the refactored package.
src/main/java/com/example/spot/legacy/domain/PostScheduleRealTime.java Updated BaseEntity import to refactored package.
src/main/java/com/example/spot/legacy/domain/PostScheduleLikes.java Updated BaseEntity import to refactored package.
src/main/java/com/example/spot/legacy/domain/PostScheduleComments.java Updated BaseEntity import to refactored package.
src/main/java/com/example/spot/legacy/domain/PostReport.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/PostImage.java Updated BaseEntity import to refactored package.
src/main/java/com/example/spot/legacy/domain/PostComment.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/Post.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/Notification.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/MemberReport.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/LikedPostComment.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/domain/LikedPost.java Updated BaseEntity and Member imports to refactored packages.
src/main/java/com/example/spot/legacy/api/exception/handler/StudyHandler.java Removed redundant exception handler.
src/main/java/com/example/spot/legacy/api/exception/handler/S3Handler.java Removed redundant exception handler.
src/main/java/com/example/spot/legacy/api/exception/handler/PostHandler.java Removed redundant exception handler.
src/main/java/com/example/spot/legacy/api/exception/handler/NotificationHandler.java Removed redundant exception handler.
src/main/java/com/example/spot/legacy/api/exception/handler/MemberHandler.java Removed redundant exception handler.

@dvlp-sy
Copy link
Copy Markdown
Collaborator

dvlp-sy commented May 1, 2025

읽어야 할 코드 양이 많아서 오늘 중으로 천천히 살펴보고 다시 코드리뷰 남기겠습니다...!!
넘넘 고생하셨어요 👍🏻

@msk226
Copy link
Copy Markdown
Member Author

msk226 commented May 1, 2025

읽어야 할 코드 양이 많아서 오늘 중으로 천천히 살펴보고 다시 코드리뷰 남기겠습니다...!! 넘넘 고생하셨어요 👍🏻

거의 다 위치만 바꾼거라서 깃허브 말구 IDE에서 보시면 더 편하실것같아요!

Copy link
Copy Markdown
Collaborator

@dvlp-sy dvlp-sy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다른 급한 일이 있어 처리하다 보니 리뷰가 늦어져 죄송합니다 ㅠㅠ

올려주신 코드 잘 읽어봤습니다...!! 역시 마커스 님은 항상 빠르고 정확하게 코드를 올려주시는군요..👍🏻 도메인 단위로 정리하니까 확실히 레거시 코드에 비해 구조가 깔끔하다는 느낌이 드네요~!

코드를 읽으면서 몇 가지 추가로 제안하고 싶은 사항이 있어서 코멘트 남깁니다.

  1. Aggregate & Repository
    Aggregate에 접근이 필요한 경우에는 도메인 일관성 유지를 위해 Root Entity를 통해 접근해야 하는 걸로 알고 있어서, 추후에 MemberTheme, PreferredRegion, PreferredStudy는 직접 접근할 수 없게 MemberRepository 하나로 관리하는 방향은 어떨까요?! 요 부분은 아마 마커스님도 알고 계시지만 아직 도메인 분리만 한 상황이라서 Repository까지는 따로 정리하지 않으신 거라는 생각이 드네욥..!!

  2. Controller -> 도메인 내의 Presentation 패키지로 이동 제안
    이 부분은 보내주신 레퍼런스 소스코드 기반으로 생각해본 건데, Web 패키지 안에 Controller를 모아놓기보다 Controller도 도메인별로 분리시키는 게 어떨지 살포시 제안드려 봅니다.

  3. MemberTheme 도메인 이름
    전에 마커스 님께서 말씀하셨던 것처럼 MemberTheme이라는 이름이 썩 직관적이지 않은 것 같아서 다른 하위 Entity들처럼 PreferredTheme으로 수정하는 것이 어떨지 제안드려 봅니닷

저도 얼른 도메인 분리해서 PR 올려놓도록 하겠습니다 !! 고생하셨어요 🔥

@msk226
Copy link
Copy Markdown
Member Author

msk226 commented May 1, 2025

다른 급한 일이 있어 처리하다 보니 리뷰가 늦어져 죄송합니다 ㅠㅠ

올려주신 코드 잘 읽어봤습니다...!! 역시 마커스 님은 항상 빠르고 정확하게 코드를 올려주시는군요..👍🏻 도메인 단위로 정리하니까 확실히 레거시 코드에 비해 구조가 깔끔하다는 느낌이 드네요~!

코드를 읽으면서 몇 가지 추가로 제안하고 싶은 사항이 있어서 코멘트 남깁니다.

  1. Aggregate & Repository
    Aggregate에 접근이 필요한 경우에는 도메인 일관성 유지를 위해 Root Entity를 통해 접근해야 하는 걸로 알고 있어서, 추후에 MemberTheme, PreferredRegion, PreferredStudy는 직접 접근할 수 없게 MemberRepository 하나로 관리하는 방향은 어떨까요?! 요 부분은 아마 마커스님도 알고 계시지만 아직 도메인 분리만 한 상황이라서 Repository까지는 따로 정리하지 않으신 거라는 생각이 드네욥..!!
  2. Controller -> 도메인 내의 Presentation 패키지로 이동 제안
    이 부분은 보내주신 레퍼런스 소스코드 기반으로 생각해본 건데, Web 패키지 안에 Controller를 모아놓기보다 Controller도 도메인별로 분리시키는 게 어떨지 살포시 제안드려 봅니다.
  3. MemberTheme 도메인 이름
    전에 마커스 님께서 말씀하셨던 것처럼 MemberTheme이라는 이름이 썩 직관적이지 않은 것 같아서 다른 하위 Entity들처럼 PreferredTheme으로 수정하는 것이 어떨지 제안드려 봅니닷

저도 얼른 도메인 분리해서 PR 올려놓도록 하겠습니다 !! 고생하셨어요 🔥

에고... 바쁘시면 천천히 해주셔도 괜찮습니다! 부담 안가지셔도 됩니당!

  1. 좋은 생각 같습니다! 시루님 말씀대로 이번 단계에서는 그냥 분리만 시키려고 따로 건드리지는 않았어요! 다음 단계에서 반영 해보도록 할게요!

  2. member 패키지 하위에 domain,application, presentation 이렇게 두는 도메인 우선 설계 방식을 제안하시는건가요?! 일단 제가 이해한게 맞다면, 저희가 보통 계층 별로 작업하는게 아니라 도메인 별로 작업을 하니까 시루님 말씀대로 도메인 우선 설계 방식이 더 좋은 선택 같습니다! 이 부분 확인 하시면 반영 해서 PR 머지하겠습니다!

  3. 맞아요! 이 부분도 다음 단계 리팩토링에서 바로 반영하도록 하겠습니다!

@dvlp-sy
Copy link
Copy Markdown
Collaborator

dvlp-sy commented May 1, 2025

다른 급한 일이 있어 처리하다 보니 리뷰가 늦어져 죄송합니다 ㅠㅠ
올려주신 코드 잘 읽어봤습니다...!! 역시 마커스 님은 항상 빠르고 정확하게 코드를 올려주시는군요..👍🏻 도메인 단위로 정리하니까 확실히 레거시 코드에 비해 구조가 깔끔하다는 느낌이 드네요~!
코드를 읽으면서 몇 가지 추가로 제안하고 싶은 사항이 있어서 코멘트 남깁니다.

  1. Aggregate & Repository
    Aggregate에 접근이 필요한 경우에는 도메인 일관성 유지를 위해 Root Entity를 통해 접근해야 하는 걸로 알고 있어서, 추후에 MemberTheme, PreferredRegion, PreferredStudy는 직접 접근할 수 없게 MemberRepository 하나로 관리하는 방향은 어떨까요?! 요 부분은 아마 마커스님도 알고 계시지만 아직 도메인 분리만 한 상황이라서 Repository까지는 따로 정리하지 않으신 거라는 생각이 드네욥..!!
  2. Controller -> 도메인 내의 Presentation 패키지로 이동 제안
    이 부분은 보내주신 레퍼런스 소스코드 기반으로 생각해본 건데, Web 패키지 안에 Controller를 모아놓기보다 Controller도 도메인별로 분리시키는 게 어떨지 살포시 제안드려 봅니다.
  3. MemberTheme 도메인 이름
    전에 마커스 님께서 말씀하셨던 것처럼 MemberTheme이라는 이름이 썩 직관적이지 않은 것 같아서 다른 하위 Entity들처럼 PreferredTheme으로 수정하는 것이 어떨지 제안드려 봅니닷

저도 얼른 도메인 분리해서 PR 올려놓도록 하겠습니다 !! 고생하셨어요 🔥

에고... 바쁘시면 천천히 해주셔도 괜찮습니다! 부담 안가지셔도 됩니당!

  1. 좋은 생각 같습니다! 시루님 말씀대로 이번 단계에서는 그냥 분리만 시키려고 따로 건드리지는 않았어요! 다음 단계에서 반영 해보도록 할게요!
  2. member 패키지 하위에 domain,application, presentation 이렇게 두는 도메인 우선 설계 방식을 제안하시는건가요?! 일단 제가 이해한게 맞다면, 저희가 보통 계층 별로 작업하는게 아니라 도메인 별로 작업을 하니까 시루님 말씀대로 도메인 우선 설계 방식이 더 좋은 선택 같습니다! 이 부분 확인 하시면 반영 해서 PR 머지하겠습니다!
  3. 맞아요! 이 부분도 다음 단계 리팩토링에서 바로 반영하도록 하겠습니다!

넵!! member 하위에 domain, application, presentation을 두는 방식 맞습니다 😃

@msk226 msk226 merged commit 998bb00 into develop May 1, 2025
1 check passed
@msk226 msk226 deleted the SPOT-277/refactor branch May 1, 2025 09:14
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

♻️ refactor Code Refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 회원 도메인 모델 구축

3 participants