[Hakple] JPA N+1 문제와 좋아요 상태 조회 성능 최적화
·
Project/HakPle
게시판의 댓글을 불러오는 api -> 로그인 된 사용자이면 댓글에 좋아요 누른 상태인지 아닌지 여부 포함 해야함문제 1. N+1 쿼리List comments = board.getComments();위 코드 쓰면 JPA가게시판 한 번 조회댓글 10개면 댓글 10번 따로 쿼리 날림총 11번 쿼리 나감 (이게 바로 N+1 문제)✅ 해결 1. Fetch Join 써서 쿼리 1번으로 끝냄@Query("""SELECT c FROM Comment cJOIN FETCH c.userWHERE c.board.id = :boardId AND c.status = :statusORDER BY c.creationTime ASC""")List findWithUserByBoardIdAndStatus(Long boardId, Stat..
@MappedSuperclass - 공통 엔티티 베이스 클래스 만들기
·
Project/HakPle
1. @MappedSuperclassJPA의 공통 엔티티 속성을 정의할 때 사용하는 애너테이션이 클래스를 직접 엔티티 테이블로 만들지 않고,상속받는 엔티티 클래스가 이 클래스의 필드를 테이블에 포함시키도록 함.@MappedSuperclasspublic abstract class BaseEntity { @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt;} 사용 이유모든 엔티티에서 createdAt, updatedAt 같은 필드를 반복하지 않고,상속을 통해 공통 속성을 쉽게 재사용.2. @SuperBuilderLombok의 빌더 패턴 애너테이션으로, 상속 관계에서 빌..
Spring Boot application.yml 설정
·
Project/HakPle
다양한 실행 환경(dev, prod 등)에 따라 설정을 다르게 적용할 수 있도록 구성 application.yml (기본/공통 설정)모든 환경에서 공통적으로 적용되는 설정을 담는 기본 파일서버 포트 설정 (port: 8090)공통 JPA 설정 (DDL 자동 업데이트, SQL 출력)공통 로그 레벨custom.site의 기본값 설정 (프로파일에 따라 동적으로 바뀜)spring.profiles.active: dev → 기본 실행 환경은 dev로 설정됨# 공통 설정 파일server: port: 8090 # 서버 포트 설정spring: output: ansi: enabled: ALWAYS # 콘솔 로그에 색상 출력 profiles: active: dev # 현재 활성화된 프..