전체 글
-
#Spring Data JPA - 1 프로젝트 생성Spring Data JPA 2021. 3. 12. 17:01
프로젝트 생성 ·스프링 부트 스타터(https://start.spring.io/) ·사용 기능: web, jpa, h2, lombok · SpringBootVersion: 2.2.1 · groupId: study · artifactId: data-jpa Gradle 전체 설정 plugins { id ‘org.springframework.boot’ version ‘2.2.1.RELEASE’ id ‘io.spring.dependency-management’ version ‘1.0.8.RELEASE’ id ‘java’ } group = ‘study’ version = ‘0.0.1-SNAPSHOT’ sourceCompatibility = ‘1.8’ configurations { compileOnly { exte..
-
-
#실전 2 - 9 스프링 데이터 JPA 소개SPRING-BOOT 2021. 3. 12. 15:11
스프링 데이터 JPA 소개 · https://spring.io/projects/spring-data-jpa Spring Data JPA Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered applications that use dat spring.io 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드(save, find, findAl..
-
#실전2 - 8 OSIV와 성능 최적화SPRING-BOOT 2021. 3. 12. 11:34
API 개발 고급 - 실무 필수 최적화 OSIV와 성능 최적화 · Open Session In View: 하이버네이트 (JPA에서의 em이 하이버네이트에서 Session이다.) · Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON · spring.jpa.open-in-view : true 기본값 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. OSIV 전략은 트랜잭션 시작(JPA가 영속성 컨텍스트를 얻어오는 시점)처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. open-in-view는 트랜잭션이 끝나도 영속성컨텍스트를 요청이 더이상 없거나 ..
-
#실전2 - 7 컬렉션 조회 최적화SPRING-BOOT 2021. 3. 9. 17:31
API 개발 고급 - 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자. Order 기준으로 컬렉션인 OrderItem 와 Item 이 필요하다. 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자 주문 조회 V1: 엔티티 직접 노출 package jpabook.jpashop.api; import jpabook.jpashop.domain.Order; import jpabook.jpashop.domain.OrderItem; import jpabook.jpashop.repository.OrderRepository; import jpabook.jpashop.repos..
-
#실전2 - 6 지연 로딩과 조회 성능 최적화SPRING-BOOT 2021. 3. 8. 21:40
API 개발 고급 - 지연 로딩과 조회 성능 최적화 주문 + 배송정보 + 회원을 조회하는 API를 만들자 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. 참고: 지금부터 설명하는 내용은 정말 중요합니다. 실무에서 JPA를 사용하려면 100% 이해해야 합니다. 안그러면 엄청난 시간을 날리고 강사를 원망하면서 인생을 허비하게 됩니다. 간단한 주문 조회 V1: 엔티티를 직접 노출 package jpabook.jpashop.api; import jpabook.jpashop.domain.Address; import jpabook.jpashop.domain.Order; import jpabook.jpashop.domain.OrderStatus; import jpabook.jpashop.reposito..
-
#실전2 - 5 API 개발 고급 수강 전 조회용 샘플 데이터 입력SPRING-BOOT 2021. 3. 8. 13:53
조회용 샘플 데이터 입력 API 개발 고급 설명을 위해 샘플 데이터를 입력하자. userA · JPA1 BOOK · JPA2 BOOK userB · SPRING1 BOOK · SPRING2 BOOK InitDb class(샘플데이터 생성을위함 임시 class) package jpabook.jpashop; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; ..
-
#실전2 - 4 회원조회 APISPRING-BOOT 2021. 3. 8. 11:41
[출처] 인프런 김영한 강사님 -실전! 스프링 부트와 JPA 활용2 - 웹 애플리케이션 개발 table drop 없이 데이터 넣어놓으면 계속 사용가능. 조회 테스트를 위해서 변경 문제점 : Entity를 반환했다. 회원의 정보만 알고싶은데 orders 정보까지 노출이 된다. @JsonIgnore를 통해서 파싱할때 orders 정보를 뺄수 있다. 하지만 다른 API를 만들때 문제가 된다. 그때마다 CASE를 바꿀 수 없는 노릇이다. 그리고 ENTITY에 화면을 뿌리기 위한 프레젠테이션 로직이 추가되 버린 것이다. 이렇게되면 ENTITY로 의존관계가 들어와야하는데 여기서는 ENTITY에서 의존관계가 나가는 것이다. 회원조회 V1: 응답 값으로 엔티티를 직접 외부에 노출 package jpabook.jpash..