[프로젝트 일지] 230122

개발새발log·2023년 1월 22일
0

프로젝트일지

목록 보기
3/3

간만에 쓰는 비사이드 플젝 일지➿

1. 메소드 추출

한동안 눈에 불을 켜고 메소드 당 라인 10줄 이하를 지키며 코딩하다 보니 간만에 본 길다란 스크랩 코드에 경악하고(..) 메소드를 분리했다.

스크랩하기/스크랩 취소 메소드인데, 특정 유저-컨텐츠 조합이 존재하면 스크랩하기, 아니면 스크랩 취소를 수행한다. 이때, 스크랩 하는 메소드 하나, 스크랩 취소하는 메소드 하나씩 추출했다.

2. MYSQL timezone 표시 문제

스크랩 날짜에 따른 정렬을 수행하기 위해 스크랩 날짜 필드를 엔티티에 추가하고, LocalDatetime.now()로 날짜가 저장되게끔 했다. 실제로 스크랩 해보니 디비에 시간이 잘못 저장되길래 계속 DB 쪽 timezone을 수정하려고 이것저것 해보았는데..

  • URL 파라미터로 timezone 설정(참고) -> 히카리가 무시함, MySQL의 timezone 세팅을 따른다고 함 (출처)

  • 그래서 MySQL 자체에서 timezone 세팅을 변경해보았다

-- 타임존 설정 변경
SET GLOBAL time_zone = 'Asia/Seoul';
SET time_zone='Asia/Seoul';

-- 시스템 타임존 확인
SELECT @@global.time_zone, @@session.time_zone;

그런데도 변한 게 없길래 대체 뭐가 문제인가.. 싶었는데 도커 문제였다(참고) 그쪽은 잘 몰라서 문의 드려야겠음,,

3. Spring Data JPA Pagination 적용 && 날짜순 정렬 적용

날짜순 정렬 코드를 추가하고 24개로 limit 하는 Pagination을 적용했다. 알고보니 JPQL 쿼리가 limit을 지원 안 하길래 얼떨결에 활용🫥

// Service 코드
List<Content> scrapContents = scrapRepository.findScrapContentsByUserId(Long.parseLong(userId), PageRequest.of(0, 24));
                
// Repository 코드
@Query(value = "select c from Scrap s, Content c where s.content=c and s.user.userId=:userId order by s.scrapDate desc")
List<Content> findScrapContentsByUserId(@Param("userId") Long userId, Pageable pageable);
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글