
해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 중급 문법 이전 [Querydsl] 02. 기본 문법 에 이어 Querydsl에서 프로젝션, 동적 쿼리, 수정 삭제 벌크 연산 등에 대해 알아보도록 하자. 프로젝션과 결과 반환 프로젝션이란? select 대상을 원하는 값으로 지정하는 것. 프로젝션 대상을 여러가지 경우로해서 코드와 함께 보자. - 기본 : 프로젝션 대상이 엔티티인 경우 [프로젝션 대상이 하나일 때] @Test public void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String ..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 문법 검색 조건 쿼리 @Test public void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색 조건은 .and(), .or()를 메서드 체인으로 연결할 수 있다. 또한 위에서 and 조건은 파라미터로 처리할 수 있다. 예) where(member.username.eq(“..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 지식 JPQL과 Querydsl의 차이 시작전 JPQL과 Querydsl의 차이점이 뭔지 예제로 알아보자.(시작전 세팅은 제외) [JPQL로 작성한 “member1”을 찾는 예제] @Test public void startJPQL() { // member1 find. String qlString = "select m from Member m " + // 만약 여기서 m옆에 공백이 빠진다면..? "where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("us..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true 기본값 최신 Spring boot 부터 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 지금까지 View Template이나 ..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - 컬랙션 조회 최적화 : 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 주문 조회 - 엔티티 조회 V1 - 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List orderV1..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 - 지연 로딩과 조회 성능 최적화 : 이전에 만들었던 회원에 사용되는 API에서 나아가서 “주문 + 배송정보 + 회원”을 조회하는 API를 만드는게 목표. 또한 이에 따라 발생하는 지연로딩의 성능 문제를 단계적으로 해결해 보는 것이 목표. 간단한 주문 조회 V1 - 엔티티를 직접 노출 @RestController @RequiredArgsConstructor public class OrderSimpleApiController { private final OrderRepository orderRepository; /**  * V1. 엔티티 직접 노출 * -..

해당 글은 김영한님의 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 - 인프런 | 강의를 수강하고 정리한 게시글입니다. API 개발 기본 postman : 현재 사용되는 웹사이트에 파라미터 전달용도 - 설치(Postman) 회원 등록 API V1 - 엔티티를 Request Body에 직접 매핑 @RestController // @Controller @ResponseBody 합친거임 @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMembe..

해당 글은 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 다형성 쿼리 TYPE : 조회 대상을 특정 자식으로 한정 예) Item 중에 Book, Movie를 조회해라 [JPQL] select I from Item i where type(i) IN (Book, Movie) [SQL] select i from I where i.DTYPE in (‘B’, ‘M’) TREAT(JPA 2.1) 자바의 타입 캐스팅과 유사 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용 FROM, WHERE, SELECT(하이버네이트 지원) 사용 예) 부모인 Item과 자식 Book이 있다. [JPQL] select i from Item i where tre..