jpa

·코딩딩/Error
Spring Data JPA에서 JpaRepository를 extends 해줄때 선언해준 객체를 준수하지 않고 Integer 타입을 반환하려고 했을때 해당 오류가 발생했다. 문제의 코드 package com.playdata.eungae.appointment.repository; import java.util.List; import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa...
·코딩딩/Error
저번 포스팅에서 OneToOne 관계의 주인에서는 지연로딩이 적용되지만 주인이 아니면 지연로딩이 적용되지 않고 EAGER로 데이터가 불러오는 문제에 대해서 다뤄봤다. 그렇다면 해결방법은 뭐가 있을까? 내가 생각한 방법은 OneToOne 연관관계에서 주인이 아닌 쪽에 Long 타입으로 주인의 Seq를 저장하는것이다. @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @DynamicInsert @Getter @Table(name = "appointment") @Entity @Builder public class Appointment extends BaseEntity { @GeneratedValue(strategy = Generati..
·코딩딩/Error
프로젝트를 진행하다가 OneToOne 관계에서 FetchType.LAZY를 설정해주었음에도 즉시 로딩이 실행되 N+1 문제가 발생하는것을 확인했다. 문제의 Entity들 @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Table(name = "review") @Entity @Builder public class Review extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long reviewSeq; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "hospita..
·코딩딩/Error
평소와 같이 아무생각 없이 Builder를 사용해서 Entity를 작성했다. Member Entity package com.playdata.eungae.member.domain; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import org.hibernate.annotations.DynamicInsert; import com.playdata.eungae.base.BaseEntity; import com.playdata.eungae.hospital.domain.Hospital; import jakarta.persistence.CascadeType; i..
·코딩딩/Spring
부트캠프에서 파이널 프로젝트를 진행하며 Entity를 생성하다가 문뜩 이런 생각이 들었다. Entity의 Id값은 null이 허용되지 않는데 어째서 Wrapper class인 Long타입으로 작성할까? 기존에는 단순히 하이버네이트에서 권장하는 스펙이 Wrapper class라서 생각없이 작성했지만 저번 멘토님이 지적해주신 사항이 떠올라 찾아보기로 했다. 1. 표현 범위 만약 실제로 배포가 완료된 서비스에서 int형을 사용한다면 저장 범위를 뛰어넘는 수가 Id값에 할당될 수 있다. 2. Null 처리 원시타입 long에 null이 들어온다면 0으로 값이 처리된다. 하지만 entity의 관점에서 봤을땐 0은 null이 아닌 값으로 본다. id가 없을때 null을 선언함으로 id가 없다는 것을 보장할 수 있게..
·코딩딩/Spring
JPA를 사용하며 OneToMany 관계를 DTO로 변경하는 과정에서 N+1 문제가 심심치 않게 발생하는 것을 발견할 수 있다. 기존엔 방법을 몰라 모든 연관관계를 fetch join으로 처리하면 되겠다고 생각했지만 해당 방법은 페이징 처리가 불가능하다는 단점이 있다는 사실을 알게되었다. 그렇다면 해결 방법으로는 어떤것들이 있을까? 실습에 사용될 Entity OrderEntity @Entity @Getter @Setter @Table(name = "orders") // 이렇게 선언해주면 함부로 기본 생성자로 객체를 생성할 수 없다 @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Colum..
전낙타
'jpa' 태그의 글 목록