반응형
제육's 휘발성 코딩
반응형
article thumbnail
[Spring Data JPA] - 쿼리 메서드 기능
🔷 Spring/Data JPA 2022. 5. 31. 23:37

쿼리 메서드 기능 메서드 이름으로 쿼리 생성 NamedQuery @Query 파라미터 바인딩 반환 타입 페이징과 정렬 벌크성 수정 쿼리 @EntityGraph JPA 공식문서 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation Spring Data JPA는 다음과 같이 여러 쿼리 메서드 기능을 제공한다. 순수 JPA 테스트 코드 public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :u..

article thumbnail
[Spring Data JPA] - 공통 인터페이스 기능(JpaRepository)
🔷 Spring/Data JPA 2022. 5. 24. 14:54

공통 인터페이스 기능 순수 JPA 기반 리포지토리 스프링 데이터 JPA 공통 인터페이스 소개 및 활용 순수 JPA 기반 리포지토리 JPA에서 수정은 변경감지 기능을 사용하면 된다. 트랜잭션 안에서 엔티티를 조회한 다음에 데이터를 변경하면, 트랜잭션 종료 시점에 변경감지 기능이 작동해서 변경사항이 있으면 UPDATE SQL을 실행한다. package study.datajpa.repository; import org.springframework.stereotype.Repository; import study.datajpa.entity.Member; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; impor..

article thumbnail
[Spring Data JPA] - 스프링 프로젝트 환경 설정
🔷 Spring/Data JPA 2022. 5. 24. 13:50

프로젝트 환경 설정 프로젝트 생성 https://start.spring.io/ 에서 다음과 같이 프로젝트 생성 라이브러리 spring-boot-starter-web 톰캣, 스프링 웹 MVC spring-boot-starter-data-jpa aop, jdbc (HikariCP 커넥션 풀) , 하이버네이트 JPA, 스프링 데이터 JPA spring-boot-starter 스프링 부트 + 스프링 코어 + 로깅 spring-boot-starter-test junit5 (기본) , mokito, assertj, spring-test plugins { id 'org.springframework.boot' version '2.6.8' id 'io.spring.dependency-management' version ..

article thumbnail
[Spring JPA 활용2] - QueryDsl 설정
🔷 Spring/JPA 활용 II 2022. 5. 23. 20:07

QueryDSL 실무에서는 조건에 따라서 실행되는 쿼리가 달라지는 동적 쿼리를 많이 사용한다. 이전 방법 public List findAllByString(OrderSearch orderSearch) { //language=JPAQL String jpql = "select o From Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"..

article thumbnail
[Spring JPA 활용2] - OSIV와 성능 최적화
🔷 Spring/JPA 활용 II 2022. 5. 23. 18:54

OSIV 전략 OSIV 란 Open Session In View 라는 하이버네이트 전략이며, JPA에선 Session 대신 EntityManager 지만 관례상 통합해서 OSIV라고 부른다. OSIV ON 스프링 부트를 시작 시점에 다음과 같은 warn 로그로 남는다. 그 이유는 spring.jpa.open-in-view가 기본 값이 true로 설정되어 있기 때문이다. OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 지금까지 View Template이나 API 컨트롤러에서 지연 로딩이 가능한 것이다. 지연로딩은 영속성 컨텍스트가 살아있어야 가능하고, 영속성 컨텍스트는 데이터베이스 커넥션을 유지한..

article thumbnail
[Spring JPA 활용2] - API 개발 (컬렉션 조회 최적화)
🔷 Spring/JPA 활용 II 2022. 5. 23. 17:39

컬렉션 조회 최적화 컬렉션 조회(일대다) 시 페치조인을 사용하면 페이징 문제가 발생한다. 예제를 통해 상황을 살펴보자. 페이징 문제의 원인은 하단 포스팅을 참고하자. https://sasca37.tistory.com/184?category=1218758 [Spring JPA] JPQL 중급 문법 경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다. 경로 표현식 용어 정리 상태 필드 단순히 값을 저장하기 위한 필드 (ex : m.username) 연관 필드 연관관계를 위한 필 sasca37.tistory.com 주문내역에서 추가로 주문한 상품 정보를 조회하는 예제를 진행해보자. package jpabook.jpashop.domain; import com.fasterxml.jac..

article thumbnail
[Spring JPA 활용2] - API 개발 (지연 로딩과 조회 성능 최적화)
🔷 Spring/JPA 활용 II 2022. 5. 23. 13:00

조회용 샘플 데이터 추가 다음과과 같이 샘플 데이터를 만들어두자. userA 는 JPA1 BOOK1, JPA2 BOOK2 주문 userB 는 SPRING1 BOOK, SPRING2 BOOK 주문 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; import javax.annotation.PostConstruct..

article thumbnail
[Spring JPA 활용2] - 회원 REST API 개발 (DTO 사용 이유)
🔷 Spring/JPA 활용 II 2022. 5. 22. 15:36

API 개발 기본 포스트맨을 설치해서 API 개발 예제를 실습해보자. 포스트맨 설치 : https://www.getpostman.com Postman API Platform | Sign Up for Free Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster. www.postman.com 회원 등록 API package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import..

반응형
반응형