본문 바로가기

JPA/Spring Data Jpa3

JPA 지연 로딩 Json파싱 에러 HTML 삽입 미리보기할 수 없는 소스 1. JPA 지연 로딩 에러 발생 상황 BoardEntity와 MemberEntity가 연관 관계를 가지며 Member가 부모 Board가 자식 관계이다. @NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_no", nullable = false) private Member member; 원래는 즉시 로딩으로 사용하다가 지연 로딩으로 변경 후 게시판 상세 조회 시 에러가 발생했다. 2. 지연 로딩 json 변환 시 에러 원인 RestContoller 코드 /** * 게시판 상세 조회 * * @param boardNo * @return */ @GetMapping("/board/{boardNo}.. 2023. 8. 10.
[SpringDataJpa] QueryDsl 정리 HTML 삽입 미리보기할 수 없는 소스 1. QueryDsl 정의 JPA를 사용하다보면 method query나 jpql로 해결하기 애매한 문제들이 발생한다. 또한 jpql, mybatis처럼 문자열을 통해 쿼리를 작성하다 보면 문법에 의한 에러를 한번쯤은 겪게 되는데 QueryDsl을 사용하면 쿼리를 메소드를 통해 작성할 수 있고 자동완성, 컴파일 단계에서의 타입 체크등을 할 수 있어 더욱 편하게 쿼리를 작성할 수 있게된다. 2. QueryDsl 사용 이유 위에서 'JPA를 사용하다 보면 method query나 jpql로 해결하기 애매한 문제들' 이 발생한다고 하였다. 내가 겪은 문제는 동적 쿼리에 대한 처리였다. 자세한 상황은 아래와 같다. @GetMapping("/board") public Lis.. 2023. 8. 10.
[SpringDataJpa] findAll() n+1 문제 해결 HTML 삽입미리보기할 수 없는 소스 1. findAll() n+1 발생 원인 토의 프로젝트를 하며 게시판 목록 조회를 하던 중 findAll()을 사용하였는데 연관관계인 Member 조회 쿼리가 미친듯이 날라가는 것을 보고 멘붕이 왔다. 내가 알고 있는 배경 지식으로는 도무지 이해가 안 가는 상황이었다. 환경은 다음과 같다. BoardEntity @DynamicInsert // null 값 전달 시 insert 컬럼에서 제외,=> Default 값 적용 가능 @Entity @Getter @Table(name = "board") @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString public cl.. 2023. 8. 9.