목록BE (354)
오봉이와 함께하는 개발 블로그
스프링 데이터 JPA와 DB 설정, 동작확인 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/datajpa spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name=org.h2.Driver #이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다. spring.jpa.hibernate.ddl-auto=create # JPA가 쓰는 쿼리를 콘솔에 남기는 설정 # spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate...
스프링 데이터 JPA 소개 https://spring.io/projects/spring-data-jpa 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어 있다. 기존의 MemberRepository를 스프링 데이터 JPA로 변경해보자. MemberRepository @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.cla..
OSIV와 성능 최적화 Open Session In View : 하이버네이트 Open EntityManager In View : JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true (기본값) WARN 85220 --- [ 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 this warning이 기..
API 개발 고급 정리 엔티티 조회 엔티티를 조회해서 그대로 반환 : V1 엔티티 스펙이 변하면 API 스펙이 변하기 때문에 사용하지 말자. 엔티티 조회 후 DTO로 변환 : V2 여러 테이블을 조인해야 하면 성능이 안 나올 수 있다. 페치 조인으로 쿼리 수 최적화 : V3 V2에서 성능이 안 나오면 페치 조인을 통해 성능 향상 컬렉션 페이징과 한계 돌파 : V3.1 컬렉션(XToMany)은 페치 조인시 페이징이 불가능 XToOne 관계는 페치 조인으로 쿼리 수 최적화 컬렉션(XToMany)은 페치 조인 대신에 지연 로딩을 유지 hibernate.default_batch_fetch_size, @BatchSize로 in 쿼리를 사용해서 최적화 DTO 직접 조회 JPA에서 DTO를 직접 조회 : V4 컬렉션..
주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화 조회 V6 OrderApiController에 추가 @GetMapping("/api/v6/orders") public List ordersV6() { return orderQueryRepository.findAllByDto_flat(); } OrderQueryRepository에 추가 public List findAllByDto_flat() { return em.createQuery( "select new jpabook.jpashop.repository.order.query.OrderFlatDto" + "(o.id, m.name, o.orderDate, d.address, o.status, i.name, oi.orderPrice, oi..