Skip to content

Conversation

@chaiminwoo0223
Copy link
Contributor

@chaiminwoo0223 chaiminwoo0223 commented Oct 9, 2025

📌 작업 내용 및 특이사항

✅ Service 클래스 CQRS 패턴 적용

  • 기존 Service 클래스를 Query/Command 패턴으로 분리하여 책임 명확화
  • MemberService 삭제 -> MemberQueryService, MemberCommandService 구현
  • TripService 삭제 -> TripQueryService, TripCommandService 구현
  • StampService 삭제 -> StampQueryService, StampCommandService 구현
  • MissionService 삭제 -> MissionQueryService, MissionCommandService 구현
  • StudyLogService 삭제 -> StudyLogQueryService, StudyLogCommandService 구현
  • DailyMissionService 삭제 -> DailyMissionQueryService, DailyMissionCommandService 구현
  • StudyLogDailyMissionService 삭제 -> StudyLogDailyMissionQueryService, StudyLogDailyMissionCommandService 구현
  • DailyGoalService 삭제 -> DailyGoalQueryService, DailyGoalCommandService 구현
  • PomodoroService 삭제 -> PomodoroQueryService, PomodoroCommandService 구현

✅ Facade 클래스 트랜잭션 관리 개선

  • 기존 Service, Facade에 흩어져있던 @Transactional 어노테이션을 Facade로 모두 이동하여, 비즈니스 단위로 트랜잭션 처리 및 관리
  • MemberFacade, TripFacade, StampFacade, HardDeleteFacade 등 각 메서드에 @Transactional 어노테이션을 적용
  • Service 클래스에 있는 모든 @Transactional 어노테이션 제거

✅ Redis 캐싱 적용

  • RedisCacheConfig를 적용하여 도메인 별 TTL 전략 반영
  • CacheNameConstants, CacheKeyFactory 를 추가하여 캐시 키 관리 체계화
  • Facade 조회 메서드@Cacheable 어노테이션을 적용하여 조회 성능 개선
  • Facade 등록, 수정, 삭제 메서드@CacheEvict 어노테이션을 적용하여 캐시 무효화 적용

✅ 도메인 및 레포지토리 개선

  • DailyGoal: updateCompleted() 추가
  • MemberQueryRepository, MemberQueryRepositoryAdapter: findMemberRoleById() 반환 타입을 Optional로 변경

테스트

  • MemberServiceTest 삭제 -> MemberQueryServiceTest, MemberCommandServiceTest 단위 테스트 추가
  • TripServiceTest 삭제 -> TripQueryServiceTest, TripCommandServiceTest 단위 테스트 추가
  • StampServiceTest 삭제 -> StampQueryServiceTest, StampCommandServiceTest 단위 테스트 추가
  • MissionServiceTest 삭제 -> MissionQueryServiceTest, MissionCommandServiceTest 단위 테스트 추가
  • StudyLogServiceTest 삭제 -> StudyLogQueryServiceTest, StudyLogCommandServiceTest 단위 테스트 추가
  • DailyMissionTest 삭제 -> DailyMissionQueryServiceTest, DailyMissionCommandServiceTest 단위 테스트 추가
  • StudyLogDailyMissionServiceTest 삭제 -> StudyLogDailyMissionQueryServiceTest, StudyLogDailyMissionCommandServiceTest 단위 테스트 추가
  • DailyGoalServiceTest 삭제 -> DailyGoalQueryServiceTest, DailyGoalCommandServiceTest 단위 테스트 추가
  • PomodoroServiceTest 삭제 -> PomodoroQueryServiceTest, PomodoroCommandServiceTest 단위 테스트 추가
  • UpdateStampOrderRequestFixture 추가
  • DailyGoalFixture.createDeletedDailyGoal() 삭제

🌱 관련 이슈


🔍 참고사항(선택)

  • Facade는 각 서비스를 조정하는 계층이기 때문에, @Service 어노테이션 -> @Component 어노테이션 변경
  • TripCount -> TripCountInfo 이름 변경
  • BatchJobConfig에서 Step/Tasklet 처리 로직을 제거하고, BatchStepConfig HardDeleteTasklet 추가
  • SchedulerConfig에서 배치 스케줄러 작업 로직을 BatchJobScheduler로 분리

📚 기타(선택)

@chaiminwoo0223 chaiminwoo0223 self-assigned this Oct 9, 2025
@chaiminwoo0223 chaiminwoo0223 added ✨feature 구현, 개선 사항 관련 부분 🪄refactor 기능 개선 및 리팩토링 labels Oct 9, 2025
@chaiminwoo0223 chaiminwoo0223 force-pushed the refactor/#75 branch 2 times, most recently from 7aa8def to 0f3f4b9 Compare October 11, 2025 14:37
* feat: MemberService를 삭제하고, MemberQueryService, MemberCommandService 구현
* feat: TripService를 삭제하고, TripQueryService, TripCommandService 구현
* feat: StampService를 삭제하고, StampQueryService, StampCommandService 구현
* feat: MissionService를 삭제하고, MissionQueryService, MissionCommandService 구현
* feat: StudyLogService를 삭제하고, StudyLogQueryService, StudyLogCommandService 구현
* feat: DailyMissionService를 삭제하고, DailyMissionQueryService, DailyMissionCommandService 구현
* feat: StudyLogDailyMissionService를 삭제하고, StudyLogDailyMissionQueryService, StudyLogDailyMissionCommandService 구현
* feat: DailyGoalService를 삭제하고, DailyGoalQueryService, DailyGoalCommandService 구현
* feat: PomodoroService를 삭제하고, PomodoroQueryService, PomodoroCommandService 구현
* feat: DailyGoal에 updateCompleted 메서드 추가
* feat: MemberFacade, TripFacade, StampFacade, MissionFacade, DailyGoalFacade, HardDeleteFacade 각 메서드에 트랜잭션 적용

* refactor: MemberService, TripService, StampService, MissionService에서 @transactional 어노테이션 제거
* refactor: DailyGoalService, DailyMissionService에서 @transactional 어노테이션 제거
* refactor: PomodoroService, StudyLogService, StudyLogDailyMissionService에서 @transactional 어노테이션 제거
* refactor: Facade 조회 메서드에 @Cacheable 및 등록, 수정, 삭제 메서드에 @CacheEvict 적용
* refactor: Facade에서 @service 어노테이션 -> @component 어노테이션 변경
* refactor: MemberQueryRepository, MemberQueryRepositoryAdapter에서 findMemberRoleById 메서드 반환 타입 변경
* refactor: TripCount -> TripCountInfo 이름 변경
* refactor: BatchJobConfig에서 Step/Tasklet 처리 로직을 제거하고, BatchStepConfig 및 HardDeleteTasklet 추가
* refactor: SchedulerConfig에서 배치 스케줄러 작업 로직을 BatchJobScheduler로 분리
* refactor: RedisCacheConfig 추가 및 TTL 전략 반영
* refactor: CacheNameConstants, CacheKeyFactory 추가

* test: MemberServiceTest를 삭제하고, MemberQueryServiceTest, MemberCommandServiceTest 단위 테스트 추가
* test: TripServiceTest를 삭제하고, TripQueryServiceTest, TripCommandServiceTest 단위 테스트 추가
* test: StampServiceTest를 삭제하고, StampQueryServiceTest, StampCommandServiceTest 단위 테스트 추가
* test: MissionServiceTest를 삭제하고, MissionQueryServiceTest, MissionCommandServiceTest 단위 테스트 추가
* test: StudyLogServiceTest를 삭제하고, StudyLogQueryServiceTest, StudyLogCommandServiceTest 단위 테스트 추가
* test: DailyMissionTest를 삭제하고, DailyMissionQueryServiceTest, DailyMissionCommandServiceTest 단위 테스트 추가
* test: StudyLogDailyMissionServiceTest를 삭제하고, StudyLogDailyMissionQueryServiceTest, StudyLogDailyMissionCommandServiceTest 단위 테스트 추가
* test: DailyGoalServiceTest를 삭제하고, DailyGoalQueryServiceTest, DailyGoalCommandServiceTest 단위 테스트 추가
* test: PomodoroServiceTest를 삭제하고, PomodoroQueryServiceTest, PomodoroCommandServiceTest 단위 테스트 추가
* test: UpdateStampOrderRequestFixture 추가
* test: DailyGoalFixture에서 createDeletedDailyGoal 메서드 삭제
Copy link
Contributor

@hisonghy hisonghy left a comment

Choose a reason for hiding this comment

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

코드 리뷰 작성했습니다. 확인 부탁드려요!

Copy link
Contributor

@hisonghy hisonghy left a comment

Choose a reason for hiding this comment

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

정말 고생많으셨습니다.
머지부탁드려요!

@chaiminwoo0223 chaiminwoo0223 merged commit 9b80c2c into develop Oct 12, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature 구현, 개선 사항 관련 부분 🪄refactor 기능 개선 및 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🪄[REFACTOR]: Service 클래스에 CQRS 패턴 및 Redis 적용

3 participants