- LibraryMember 도메인 구조 -
LibraryMember는 도서관에 등록된 회원에 대한 동작을 담당하는 도메인이다.
1. DTO
도서관별로 회원 조회하는 메서드의 응답에 대한 필드를 가지고 있는 DTO 클래스이다.
2. Entity
1. 도서관에 등록된 회원에 대한 DB속 테이블에 필요한 정보를 필드로 담고있다.
2. 연관관계에 있는 테이블과의 관계도를 필드로 담고 있다.
3. Mapper
도서관에 속한 회원 전체리스트 조회 메서드에 사용되며, LibraryMember 객체를 Dto로 변환하는 역할.
응답 데이터를 나타내는 ResponseDto에 있는 필드들을 매핑할 위치를 선언할 수 있다.
@Mapper(componentModel = "spring")
public interface LibraryMemberMapper {
@Mapping(target = "libraryId", source = "library.libraryId")
@Mapping(target = "memberId", source = "member.memberId")
@Mapping(target = "libraryMemberId", source = "libraryMemberId")
@Mapping(target = "name", source = "member.name")
@Mapping(target = "phone", source = "member.phone")
@Mapping(target = "email", source = "member.email")
LibraryMemberDto.Response libraryMemberToLibraryMemberDtoResponse (LibraryMember libraryMember);
List<LibraryMemberDto.Response> libraryMembersToLibraryMembersDtoResponse (List<LibraryMember> libraryMembers);
}
4. Repository
LibraryMember에 대한 데이터를 다양한 조건으로 DB에서 가져오도록 JPQL을 작성함.
@Repository
public interface LibraryMemberRepository extends JpaRepository<LibraryMember, Long> {
@Query("SELECT lm FROM LibraryMember lm WHERE lm.library.id = :libraryId")
public Page<LibraryMember> findAllLibraryMembersByLibraryId
(@Param("libraryId")Long libraryId, Pageable pageable);
@Query("SELECT lm FROM LibraryMember lm
WHERE lm.library.id = :libraryId AND lm.member.id =:memberId")
LibraryMember findByLibrary_IdAndMember_Id
(@Param("libraryId")Long libraryId, @Param("memberId") Long memberId);
}
1. LibraryMember 테이블에서 libraryId 행(row)가 주어진 libraryId와 일치한 데이터를 가져온다.
2. LibraryMember 테이블에서 libraryId와 memberId가 주어진 것들과 일치한 데이터를 가져온다.
5. Service
LibraryBookRepository와 연계하여 DB에서 LibraryMember 테이블을 다룰 수 있도록 메서드를 보유.
A메서드. LibraryId로 LibraryMember 객체를 가져오는 메서드.
B메서드. LibraryId와 MemberId로 LibraryMember객체를 가져오는 메서드
'프로젝트 일지' 카테고리의 다른 글
#11. Rest Docs & JUnit 테스트 기초 설정 (0) | 2023.05.16 |
---|---|
#10. 싱글 프로젝트 일지 - MemberBook 도메인 (0) | 2023.05.11 |
#8. 싱글 프로젝트 일지 - libraryBook 도메인 (0) | 2023.05.11 |
#7. 싱글 프로젝트 일지 - Book 도메인 (0) | 2023.05.10 |
#6. 싱글 프로젝트 일지 - Library 도메인 (0) | 2023.05.10 |