본문 바로가기

내일 배움 캠프

2024-01-17

오늘은 프로젝트 14일 차이다.

오늘 진행한 내용은 어제 진행하던 방식에서 Admin 부분을 완성하고 오늘 본격적으로 도메인 별 조회에 대한 기능 구현을 진행했다. 기존에 작성 돼있었던 공연 정보 페이징 전체 조회와 공연 정보 단건 조회를 공연 페이징 전체 조회와 공연 정보 단건 조회로 구성을 변경하여 작성했다. 공연 정보에서 공연으로 메인 페이지와 공연을 클릭하면 넘어갈 공연 조회 페이지를 모두 정보를 줘야 할 때 문제가 생겼다.

공연 정보에서 사용하던 제목을 공연 Entity에는 가지고 있지 않았기 때문에 다른 공연이지만 제목은 모두 공연 정보에서 제목을 가져와 제목이 같은 현상이 발생했다. 이럴 경우 페이지를 들어가도 사실 공연장에 대한 정보를 확인해야 다른 공연인지 확인이 가능해서 문제가 됐다. 따라서 Entity를 수정하여 공연에 공연 제목을 추가하여 어느 지역에서 보여줄 공연인지 확인이 가능하도록 했다. 지역이 아니더라도 공연별로 제목이 다를 수 있게끔 하고 싶었다. 

@NotNull(message = "공연제목 기입은 필수 입니다.")
@Pattern(
    regexp = "([A-Za-z0-9\\s(){}<>가-힣]+) - ([A-Za-z0-9\\s(){}<>가-힣]+)",
    message = "입력 양식: (공연제목) - (지역 및 목표) 입니다.")
private final String title;

아래의 JPQL은 전체 조회를 진행할 때 사용한다. 일단 전체적으로 조건이 많아서 나름대로 조회할 때 최적화 한다고 만들어봤지만 정상처리는 잘된다. 하지만 대용량 성능 테스트를 하기 전까지는 이 쿼리의 성능을 알 수가 없다.

@Query("select g from Goods g "
    + "left join fetch g.goodsInfo gi "
    + "left join fetch gi.goodsCategory gc "
    + "where (:categoryName is null or gc.name = :categoryName) AND (g.endDate > now())")
Slice<Goods> findAllByGoodsAndCategoryName(Pageable pageable, @Param("categoryName") String categoryName);

 

Entity를 수정하고 따로  코드를 수정하여 조회 기능을 완성하고 남은 시간에 프런트를 구현하여 공연 정보 추가 페이지를만들었다. 프론트는 거의 처음이라 그런지 모든게 낮설었다. 프론트를 하다 보니 프런트에서 ajax를 통해 서버에 데이터를 전달하는 과정에서 코드 몇 줄이면 되는 걸 이해를 못 해서 오래 걸렸다. 만든 사진은 아래와 같다.

사진을 보면 좀 허접하게 구성 돼있지만 그래도 팀원분들의 도움을 많이 받아서 힘들게 완성했다.

'내일 배움 캠프' 카테고리의 다른 글

2024-01-19  (0) 2024.01.21
2024-01-18  (0) 2024.01.19
2024-01-16  (1) 2024.01.17
2024-01-15  (0) 2024.01.16
2024-01-12  (1) 2024.01.13