스터딩/JPA

OSIV와 성능 최적화

Open Session In View: 하이버네이트 Open EntityManager In View: JPA OSIV ON spring.jpa.open-in-view: true 기본값 // 실제 진행하고 있는 프로젝트 로그 2023-06-28 16:05:34.989 WARN 10544 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable thi..

스터딩/JPA

JPA 활용-컬렉션 조회 최적화

조회 성능 최적화에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계(OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 그러기 위해서는 Order 기준으로 컬렉션인 OrderItem와 Item이 필요하다. 컬렉션 조회 최적화 Entity @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = LAZY) @JoinColumn(name = "mem..

스터딩/JPA

JPA 활용-조회 성능 최적화

우선 들어가기 전에 엔티티를 Request Body에 직접 매핑하게 되면 안 되고, 직접 노출해서도 안된다는 말을 많이 들었는데 정확하게 왜 안되는지 알아보겠다. 엔티티에 API 검증을 위한 로직이 들어간다. (@NotEmpty 등등) ➜ 실무에서는 하나의 엔티티를 위한 API가 다양하게 만들어지는데, 한 엔티티에 각각의 API를 위한 모든 요청의 요구사항을 담기는 어렵다. ➜ 예를 들어 1번 요구사항에서는 "이름의 유효성 검사를 3글자 이상으로 해라"라고 했는데 2번 요구사항에서는 "이름의 유효성 검사를 3글자 이하로 해라"라고 하면 매우 난감해진다. 엔티티가 변경되면 API 스펙이 변한다. 실무에서는 보안이 중요하기 때문에 엔티티를 API 스펙에 노출하면 안 된다! ➜ DTO로 변환해서 Client단..

호야_
'스터딩/JPA' 카테고리의 글 목록