Skip to content

Commit 7f3b821

Browse files
committed
CLAP-451 Refactor: department fetch가 필요한 서비스에 대해서 쿼리 메서드 작성
#590
1 parent 74682b4 commit 7f3b821

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,24 @@ public Optional<Member> findById(final Long id) {
3131
return memberEntity.map(memberPersistenceMapper::toDomain);
3232
}
3333

34+
@Override
35+
public Optional<Member> findByIdWithFetchDepartment(Long id) {
36+
Optional<MemberEntity> memberEntity = memberRepository.findByIdWithFetchDepartment(id);
37+
return memberEntity.map(memberPersistenceMapper::toDomain);
38+
}
39+
3440
@Override
3541
public Optional<Member> findActiveMemberById(final Long id) {
3642
Optional<MemberEntity> memberEntity = memberRepository.findByStatusAndMemberId(MemberStatus.ACTIVE, id);
3743
return memberEntity.map(memberPersistenceMapper::toDomain);
3844
}
3945

46+
@Override
47+
public Optional<Member> findActiveMemberByIdWithFetchDepartment(Long id) {
48+
Optional<MemberEntity> memberEntity = memberRepository.findActiveMemberByIdWithFetchDepartment(id);
49+
return memberEntity.map(memberPersistenceMapper::toDomain);
50+
}
51+
4052
@Override
4153
public Optional<Member> findActiveMemberByNickname(final String nickname) {
4254
Optional<MemberEntity> memberEntity = memberRepository.findActiveMemberByNickname(nickname);
@@ -85,7 +97,7 @@ public List<Member> findActiveManagers() {
8597

8698
@Override
8799
public Page<Member> findAllMembers(final Pageable pageable) {
88-
return memberRepository.findAllMembers(pageable).map(memberPersistenceMapper::toDomain);
100+
return memberRepository.findAllMembersWithFetchDepartment(pageable).map(memberPersistenceMapper::toDomain);
89101
}
90102

91103
@Override

src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberCustomRepositoryImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class MemberCustomRepositoryImpl implements MemberCustomRepository {
2525
private Page<MemberEntity> executeQueryWithPageable(Pageable pageable, BooleanBuilder whereClause, OrderSpecifier<?> orderSpecifier) {
2626
List<MemberEntity> result = queryFactory
2727
.selectFrom(memberEntity)
28+
.leftJoin(memberEntity.department).fetchJoin()
2829
.where(whereClause)
2930
.orderBy(orderSpecifier)
3031
.offset(pageable.getOffset())

src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberRepository.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
44
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
55
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
6+
import org.springframework.data.domain.Page;
7+
import org.springframework.data.domain.Pageable;
68
import org.springframework.data.jpa.repository.JpaRepository;
79
import org.springframework.data.jpa.repository.Query;
810
import org.springframework.data.repository.query.Param;
@@ -13,7 +15,13 @@
1315
import java.util.Set;
1416

1517
@Repository
16-
public interface MemberRepository extends JpaRepository<MemberEntity, Long>, MemberCustomRepository {
18+
public interface MemberRepository extends JpaRepository<MemberEntity, Long>, MemberCustomRepository {
19+
@Query("SELECT m FROM MemberEntity m LEFT JOIN FETCH m.department WHERE m.memberId = :id")
20+
Optional<MemberEntity> findByIdWithFetchDepartment(Long id);
21+
22+
@Query("SELECT m FROM MemberEntity m LEFT JOIN FETCH m.department WHERE m.memberId = :id AND m.status='ACTIVE'")
23+
Optional<MemberEntity> findActiveMemberByIdWithFetchDepartment(Long id);
24+
1725
List<MemberEntity> findByRoleAndStatus(MemberRole role, MemberStatus status);
1826

1927
Optional<MemberEntity> findByStatusAndMemberId(MemberStatus memberStatus, Long memberId);
@@ -26,7 +34,9 @@ public interface MemberRepository extends JpaRepository<MemberEntity, Long>, Me
2634

2735
List<MemberEntity> findByIsReviewerTrue();
2836

29-
List<MemberEntity> findAll(); // 전체 회원 조회
37+
@Query(value = "SELECT DISTINCT m FROM MemberEntity m LEFT JOIN FETCH m.department",
38+
countQuery = "SELECT COUNT(DISTINCT m) FROM MemberEntity m")
39+
Page<MemberEntity> findAllMembersWithFetchDepartment(Pageable pageable);
3040

3141
Optional<MemberEntity> findByMemberIdAndIsReviewerTrue(Long memberId);
3242

src/main/java/clap/server/application/port/outbound/member/LoadMemberPort.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@
1515
public interface LoadMemberPort {
1616
Optional<Member> findById(Long id);
1717

18+
Optional<Member> findByIdWithFetchDepartment(Long id);
19+
1820
Optional<Member> findActiveMemberById(Long id);
1921

22+
Optional<Member> findActiveMemberByIdWithFetchDepartment(Long id);
23+
2024
List<Member> findActiveManagers();
2125

2226
Optional<Member> findReviewerById(Long id);

0 commit comments

Comments
 (0)